Tengo un objeto global definido en un archivo "objeto.h" de la forma:
#ifndef objetoo__h
#define objetoo__h
typedef struct objeto {
int a;
} objeto;
objeto objetin;
#endif
Luego defino una clase en "clase.h" y su implementación en "clase.cpp". En clase.h procedo de la siguiente forma:
#ifndef clase__h
#define clase__h
#include "objeto.h"
extern objeto objetin;
class clase { ...
}
#endif
En clase.cpp simplemente pongo en la directivas del preprocesador:
#include "clase.h"
Es en clase.cpp donde hago uso del objeto global objetin. El problema que tengo es que despues, haciendo uso de un tercer archivo main.cpp en el que incluyo "objeto.h" y "clase.h" y de nuevo declaro extern objetin, el compilador g++ me da error por definiciones multiples de objetin, sin embargo, si en lugar de usar un archivo separado para la implementación de clase.h, pongo las definiciones de los metodos en clase.h, este problema desaparece. ¿Por qué ocurre esto?