我正在尝试创建一个包含另外两个对象的类,这些对象应该维护一个指向它们所在类的指针。对于
例如...(我只是在对象实例变量上使用,最终想象有一个非常类似于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;
}
现在是有问题的类(class)....
//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 没有命名类型”,然后当然是“错误:预期‘)’在‘*’标记之前” 我的猜测是这与他们(包括彼此)有关吗?
(不确定这是否重要,但在实际代码中,函数实现在包含 header 的 .cpp 文件中。这样可以吗?)
最佳答案
我假设这些是拼写错误,但当您有 A *
时,我可能会误认为 classA
。
您需要做的是前向声明类。
class ClassA;
class ClassB{
...
};
ClassA
也是如此
class ClassB;
class ClassA{
....
};
关于c++ - 多类依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6406258/