declaração forward com vetor do tipo de classe - ponteiro para o tipo de classe incompleto não permitido

Eu tenho duas classes,foo ebar.

foo.h#includes bar.h e contém umstd::vector de ponteiros parabar objetos. Em algum momento durante o tempo de execução,bar precisa acessar esse vetor de ponteiros para outrosbar objetos. Portanto,foo contém um método chamadogetBarObjects() que retorna a matriz de ponteiro

Portanto, declarofoo em bar.h. Obviamente, também tenho que encaminhar declarar o método que estou usando -foo::getBarObjects(). Como isso retorna a matriz de ponteiros parabar, Eu entro em um ciclo vicios

Não consigo encaminhar declarar Bar e simplesmente encaminhar declarargetBarObjects(), pois isso resulta em "nome de tipo incompleto não é permitido"

foo.h:

#include "bar.h"
#include <vector>

class foo {
    public:
         foo();
         ~foo();
         std::vector<bar*> getBarObjects();
    private:
         std::vector<bar*> barObjects;
}

bar.h:

class foo;
std::vector<bar*> foo::getBarObjects();        // error, doesn't know bar at this point

class bar {
    public:
        bar(foo *currentFoo);
        ~bar();
        bool dosth();
    private:
        foo *thisFoo;
}

bar.cpp:

#include "bar.h"

bool bar(foo *currentFoo) {
    thisFoo = currentFoo;
}

bool bar::dosth() {
    thisFoo->getBarObjects();        // error, pointer to inomplete class type is not allowed
}

Se eu simplesmente incluir o contrário, terei o mesmo problema emfoo mais tarde. Alguma sugestão

questionAnswers(3)

yourAnswerToTheQuestion