Я пытаюсь создать класс, который содержит два других объекта, и этот объект должен поддерживать указатель на класс, в котором они содержатся. Для
Например ... (Я использую только объектпеременная экземпляра, в последнем представлении есть класс, очень похожий на ClassB)
Это просто мой main.cpp, подумал, что я бы включил его, чтобы быть тщательным ...
//Filename: main.cpp
#include "ClassA.hpp"
int main(int argc, char **args) {
ClassA *a = new ClassA();
// There would be some more here in the real code
return 0;
}
Теперь о классах в вопросах ....
//Filename: classA.hpp
#ifndef CLASSA_H
#define CLASSA_H
#include "ClassB.hpp"
class ClassA {
public:
ClassA() {
b = new B(this);
};
virtual ~ClassA();
private:
ClassB *b;
};
#endif //CLASSA_H
Теперь вот другой файл ...
#ifndef CLASSB_H
#define CLASSB_H
#include "ClassB.hpp"
//Filename: classB.hpp
class ClassB {
public:
ClassB(ClassA *parent) {
this->parent = parent;
};
virtual ~ClassB();
private:
A *parent;
};
#endif //CLASSB_H
Когда я пытаюсь скомпилировать это, я получаю ошибку "ошибка: ClassA не называет тип ", а затем, конечно," ошибка: ожидается ")" до '*' токена "Мне кажется, это как-то связано с ними, включая друг друга?
(Не уверен, что это важно, но в реальном коде реализации функций находятся в файле .cpp, который содержит заголовок. Будет ли это делать?)