程序报错显示:does not name a type.
解决方法:
采用 前置声明加指针的方法解决。
//头文件1
#include"2.h"
class B; //前置声明
class A{
private:
B* b1; //不报错
std::shared_ptr<B> b2; //不报错
B* b3(new B); //报错
std::shared_ptr<B> b4(new B); //报错
};
//头文件2
#include"1.h"
class B{
private:
A* a;
};
注意:必须用指针,直接声明 B b;会报错: has incomplete type,且指针不能利用c++11特性直接进行初始化赋值。可以在cpp文件中进行初始化。
以上结果是在自己操作实践过程中得知,理论不知。