Круговые зависимости / неполные типы

В C ++ у меня проблема с циклическими зависимостями / неполными типами. Ситуация выглядит следующим образом:

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();
}
Если я сохраню включения, как показано выше, я получу ошибку компилятораspritesheet has not been declared в Stuffcollection.h (строка 4 выше). Я понимаю, что это связано с круговой зависимостью.Теперь, если я изменюсь#include "Spritesheet.h" к предварительной декларацииclass Spritesheet; в Stuffcollection.h я получаю ошибку компилятораinvalid use of incomplete type 'struct Spritesheet' в Stuffcollection.cpp (строка 2 выше).Точно так же, если я изменю#include "Stuffcollection.h" вclass Stuffcollection; в Spritesheet.h я получаю ошибку компилятораaggregate 'Stuffcollection stuffme' has incomplete type and cannot be defined в Spritesheet.cpp (строка 2 выше).

Что я могу сделать, чтобы решить эту проблему?

Ответы на вопрос(3)

Ваш ответ на вопрос