我有一个我认为与前向声明有关的问题,但也许不是。
以下是相关代码:
啊
#ifndef A_H_
#define A_H_
#include "B.h"
class A
{
private:
B b;
public:
A() : b(*this) {}
void bar() {}
};
#endif /*A_H_*/
溴化氢
#ifndef B_H_
#define B_H_
#include "A.h"
class A;
class B
{
private:
A& a;
public:
B(A& a) : a(a) {}
void foo() { /*a.bar();*/ } //doesn't compile
};
#endif /*B_H_*/
主文件
#include "A.h"
int main()
{
A a;
return 0;
}
问题似乎在于 A::bar() 的调用。该程序成功编译,直到我尝试调用此方法,此时我得到两个错误:
错误:无效使用不完整类型'struct A'</p>
错误:“结构 A”的前向声明</p>
我认为这是因为 A::bar() 尚未定义或声明,因为两个标题相互引用。但是,我转发了声明的 A 类并且不知道我还需要做什么。我是 C++ 新手,所以请原谅我。我在网上其他任何地方都找不到这个问题的答案。一如既往,提前致谢!