Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/08/2012, 15:02
fabian_n7
Usuario no validado
 
Fecha de Ingreso: febrero-2012
Mensajes: 24
Antigüedad: 12 años, 10 meses
Puntos: 0
definicion multiple de funciones C++

Hola Amigos! que tal?
Estoy teniendo un problema que se por donde viene pero no encuentro como solucionar el error.

Tengo una funcion que defino en un archivo .cpp que luego incluyo en otro archivo cpp y finalmente a este ultimo en el cpp que contiene a la función main() o sea hago una cascada de #includes.

el error del compilador es el siguiente:

13|multiple definition of `creavector(float)'|

el Código de prueba es este:


Archivo inc1.cpp
Código C++:
Ver original
  1. #include<iostream>
  2.     using std::cout;
  3.  
  4.     struct vector3d
  5.     {
  6.         float x;
  7.         float y;
  8.         float z;
  9.     };
  10.  
  11.     float creavector(float x)
  12.     {
  13.  
  14.  
  15.         return x;
  16.     }
  17.  
  18.  
  19.  
  20.  
  21.  
  22.     float b = creavector(1.0);

Archivo inc2.cpp

Código C++:
Ver original
  1. #include<iostream>
  2.     using std::cout;
  3.  
  4.  
  5.     #include"inc1.cpp"
  6.  
  7.  
  8.  
  9.     float c = creavector(1.0);

Archivo main.cpp

Código C++:
Ver original
  1. #include"inc2.cpp";
  2.     #include<iostream>
  3.     using std::cout;
  4.  
  5.    
  6.  
  7.     int main(int argc, char* argv[])
  8.     {
  9.  
  10.         float d = creavector(1.0);
  11.  
  12.  
  13.         return 0;
  14.     }


Alguien sabe soluciono el error que me da el compilador? al parecer es por que toma como que si se definiera la misma funcion varias veces con los mismos argumentos y tipos y se que eso no es posible.

Aclaro que este código no hace nada, solo es para simplificarlo y me puedan ayudar :)

Agradezco cualquier ayuda o consejo que puedan darme ya que estoy bastante trabado con esto.

Saludos a todos!

PD: ya probe utilizar las include guard #ifndef NOMBRE_H , #define NOMBRE_H y #endif pero pasa lo mismo.