0
点赞
收藏
分享

微信扫一扫

c++头文件相互包含解决方法

一只1994 2022-02-09 阅读 144

程序报错显示: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文件中进行初始化。

以上结果是在自己操作实践过程中得知,理论不知。

举报

相关推荐

0 条评论