为什么会有这样的错误,然后感觉代码段也有点弯弯绕绕,能理解的都打在了注释,其他的可以解释详细一点吗
正如编译器的提示所述,编译器只在CA类的前面找到了CB类的声明,但没有找到其定义;
对CA类来说,CB是一个不完整类型(incomplete type),因为没有对其定义;
所以调用一个不完整类型的方法会报错。
如果把CB的定义放在CA的前面,就没有错误了。
#include <iostream>
class CA;
class CB
{
CA* a;
public:
void funcA()
{
std::cout << "calling CB" << '\n';
}
};
class CA
{
CB* b;
public:
void callCB()
{
b->funcA();
}
};
int main()
{
CA a;
a.callCB();
}