Declarando objetos de clase en un archivo de encabezado
Saludos a todos
Parece que me estoy metiendo en un fondo, pero no puedo encontrar la solución en ningún lado. De todos modos, seguiré y explicaré.
Tengo un programa que consta de tres archivos; main.ccp, add.h, add.cpp.
Declaro la clase 'SA' en add.h y tengo todas mis funciones definidas en add.cpp
adicional.h
class SA {
...
public
int x;
} Obj1, Obj2;
main.ccp
#include "additional.h"
int main() {
Obj1.x = 5;
...
}
Esto me da un error de enlace al compilar: error LNK2005: "clase SA Obj1" (? Obj1 @@ 3VSA @@ A) ya definido en main.obj
La única definición del objeto se produce en add.h, y en ningún otro lugar. El programa compila muy bien si declara los objetos en el principal y no en el encabezado:
main.ccp
#include "additional.h"
int main() {
SA Obj1;
Obj1.x = 5;
...
}
El problema es que quiero usar los objetos principalmente dentro de add.cpp, pero aún necesito inicializar varios valores públicos a través de main.cpp. ¿Alguna palabra de sabiduría?