c++ 类的声明和使用


#include 
using namespace std;
class B;
class A { 
    B b;
};
class B {
    int a;
};

int main() {
    return 0;
}

img


为什么还是会报这个错误,我不是声明了B类吗

将以下代码(8到10行)

class B {
    int a;
};

移到class A定义的上面(也就是第5行上面)
报错原因是你在使用B的时候并没有B这个类

你可以参考这个
C++类声明
这篇文章解释了

因为你在class A中使用class B前没有定义class B,你只是声明了class B

可以先声明
class B;
这是没问题的
但是类型有问题
B b必须改为B* b
你要在构造函数里初始化这个指针,不能直接静态实例