Foros del Web » Programación para mayores de 30 ;) » C/C++ »

"multiple definition of" en una clase

Estas en el tema de "multiple definition of" en una clase en el foro de C/C++ en Foros del Web. Hola! Soy nuevo en el foro y me uno ya que acabo de entrar a Ingeniería en Computación pero me han estado surgiendo varias dudas ...
  #1 (permalink)  
Antiguo 26/08/2014, 13:34
 
Fecha de Ingreso: agosto-2014
Mensajes: 1
Antigüedad: 9 años, 7 meses
Puntos: 0
"multiple definition of" en una clase

Hola! Soy nuevo en el foro y me uno ya que acabo de entrar a Ingeniería en Computación pero me han estado surgiendo varias dudas que espero y a lo largo de mi estadía aquí puedan ser solucionadas (o por lo menos me encaminen un poco, ya que estoy casi en blanco con esto de programar), uso CodeBlocks y estoy programando en C++ un programa de una pizzería, creé la primer clase "Producto", ya la tengo lista pero al momento de querer correr el programa me sale eso :( y la verdad ni idea de qué pueda ser, ya intenté buscar pero no encontré algo que me ayudara así que les pido por favor me ayuden! Muchas gracias de antemano :3 les dejo el código aquí. El error me sale en las lineas 22 y 34.

El main:
Código:
#include <iostream>
#include <Producto.h>
using namespace std;

int main()
{
    Producto a;
    a.Capturar();
    a.Mostrar();
    return 0;
}

La class:

Código:
#ifndef PRODUCTO_H
#define PRODUCTO_H
#include <iostream>

using namespace std;

class Producto
{public:
char tipo[20], nombre[20], codigo[20];
float costo;

        Producto();
        virtual ~Producto();
    protected:
    private:
public:
        void Capturar ();
        void Mostrar ();
};

    void Producto::Capturar() 
{
cout<<"\n Tipo de Producto: "<<endl;
cin>>tipo;
cout<<"\n Nombre de Producto: "<<endl;
cin>>nombre;
cout<<"\n Codigo de Producto: "<<endl;
cin>>codigo;
cout<<"\n Costo del Producto: "<<endl;
cin>>costo;
}

    void Producto::Mostrar()
{cout<<"Tipo de Producto: "<<tipo;
cout<<"\n Nombre del Producto: "<<nombre;
cout<<"\n Código del Producto: "<<codigo;
cout<<"\n Costo del Producto: $"<<costo;
}

#endif // PRODUCTO_H
  #2 (permalink)  
Antiguo 27/08/2014, 01:38
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: "multiple definition of" en una clase

los errores que vi son los siguientes:
Este no es un error si lo has configurado el header para que este en otra carpeta pero si esta en la misma puedes sustituir esto: #include <Producto.h> por esto: #include "Producto.h"

Luego tambien has definido el contructor y el destructor pero no lo implementas en ninguna parte y eso da error.

Basicamente solo eso he visto y ya funciona.

Aqui te dejo para que veas:
producto.h
Código C++:
Ver original
  1. //Producto.h
  2. #ifndef PRODUCTO_H
  3. #define PRODUCTO_H
  4. #include <iostream>
  5.  
  6. using namespace std;
  7.  
  8. class Producto {
  9.     private:
  10.         char tipo[20], nombre[20], codigo[20];
  11.         float costo;
  12.  
  13.     public:
  14.         Producto(){};
  15.         virtual ~Producto(){};
  16.         void Capturar ();
  17.         void Mostrar ();
  18. };
  19.  
  20. void Producto::Capturar() {
  21.     cout << "\n Tipo de Producto: " << endl;
  22.     cin >> tipo;
  23.     cout << "\n Nombre de Producto: " << endl;
  24.     cin >> nombre;
  25.     cout << "\n Codigo de Producto: " << endl;
  26.     cin >> codigo;
  27.     cout << "\n Costo del Producto: " << endl;
  28.     cin >> costo;
  29. }
  30.  
  31. void Producto::Mostrar() {
  32.     cout << "Tipo de Producto: " << tipo;
  33.     cout << "\n Nombre del Producto: " << nombre;
  34.     cout << "\n Código del Producto: " << codigo;
  35.     cout << "\n Costo del Producto: $" << costo;
  36. }
  37.  
  38. #endif // PRODUCTO_H

main.cpp
//main.cpp
Código C++:
Ver original
  1. #include <iostream>
  2. #include "Producto.h"
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.     Producto a;
  8.     a.Capturar();
  9.     a.Mostrar();
  10.     return 0;
  11. }

solo use <> para hacer includes si dicha carpeta las configuras para que el compilador sepa donde esta, si el header esta junto al main use "", también puedes poner la ruta "c:\proyecto\lol\..."

Etiquetas: c++
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:18.