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?

Respuestas a la pregunta(3)

Su respuesta a la pregunta