Dependencias circulares / Tipos incompletos
En C ++, tengo un problema con dependencias circulares / tipos incompletos. La situación es la siguiente:
Stuffcollection.h
#include "Spritesheet.h";
class Stuffcollection {
public:
void myfunc (Spritesheet *spritesheet);
void myfuncTwo ();
};
Stuffcollection.cpp
void Stuffcollection::myfunc(Spritesheet *spritesheet) {
unsigned int myvar = 5 * spritesheet->spritevar;
}
void myfunc2() {
//
}
Spritesheet.h
#include "Stuffcollection.h"
class Spritesheet {
public:
void init();
};
Spritesheet.cpp
void Spritesheet::init() {
Stuffcollection stuffme;
myvar = stuffme.myfuncTwo();
}
Si mantengo las inclusiones como se muestra arriba, obtengo el error del compiladorspritesheet has not been declared
en Stuffcollection.h (línea 4 en lo anterior). Entiendo que esto se debe a una dependencia circular. Ahora si cambio#include "Spritesheet.h"
a la Declaración Adelanteclass Spritesheet;
en Stuffcollection.h, obtengo el error del compiladorinvalid use of incomplete type 'struct Spritesheet'
en Stuffcollection.cpp (línea 2 en lo anterior). Similarmente, si cambio#include "Stuffcollection.h"
aclass Stuffcollection;
en Spritesheet.h, obtengo el error del compiladoraggregate 'Stuffcollection stuffme' has incomplete type and cannot be defined
en Spritesheet.cpp (línea 2 en lo anterior).¿Qué puedo hacer para resolver este problema?