C++;成员相互引用并被使用的类 我有2个C++类,成员相互引用。我正在调用被引用类的成员,因此不能使用前向声明,因为我得到错误“不允许指向不完整类类型的指针”
有什么办法可以让这个包在这里工作吗C++;成员相互引用并被使用的类 我有2个C++类,成员相互引用。我正在调用被引用类的成员,因此不能使用前向声明,因为我得到错误“不允许指向不完整类类型的指针”,c++,include,C++,Include,有什么办法可以让这个包在这里工作吗 已经有一个票证以类似的名称打开,但我无法使用那里的解决方案。只需将定义与声明分开: class B; class A { public: void foo(); void do_something_else(){} private: B* b; }; class B { public: void bar(); void do_something(){} private: A* a; }; //now B has
已经有一个票证以类似的名称打开,但我无法使用那里的解决方案。只需将定义与声明分开:
class B;
class A {
public:
void foo();
void do_something_else(){}
private:
B* b;
};
class B {
public:
void bar();
void do_something(){}
private:
A* a;
};
//now B has a complete type, so this is fine
void A::foo() {
b->do_something();
}
//ditto
void B::bar() {
a->do_something_else();
}
只需将定义与声明分开:
class B;
class A {
public:
void foo();
void do_something_else(){}
private:
B* b;
};
class B {
public:
void bar();
void do_something(){}
private:
A* a;
};
//now B has a complete type, so this is fine
void A::foo() {
b->do_something();
}
//ditto
void B::bar() {
a->do_something_else();
}
您可以在头文件中使用原型定义。以及cpp文件中的逻辑体 完成此操作后,可以在头中使用转发声明(类B,类A)
示例:@TartanLlama您可以在头文件中使用原型定义。以及cpp文件中的逻辑体 完成此操作后,可以在头中使用转发声明(类B,类A)
示例:@TartanLlama为什么不能使用转发声明?请显示如何将类划分为文件?您可能需要向前声明,然后将
foo
和bar
的函数定义移动到源文件中。为什么不能使用向前声明?请显示如何将类划分为文件?您可能需要向前声明,然后将foo
和bar
的函数定义移动到源文件中。