博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Solve Error: 'has incomplete type', foward declaration of 'class x'
阅读量:7103 次
发布时间:2019-06-28

本文共 644 字,大约阅读时间需要 2 分钟。

在C++的OOB编程中,有时候我们会遇到这样的错误Error: 'has incomplete type',forward declaration of 'class x',那么是什么原因引起的这个问题呢,我们首先来看下面这段代码:

// Error: field '_a' has incomplete type 'A'// forward declaration of 'class A'class A;class B {public:    B(A a): _a(a) {}private:    A _a;};class A {public:    A(B b): _b(b) {}private:    B _b;};

在上面这段代码中,类A和类B互相含有对方作为自己的私有成员变量,那么不管谁写在前面,如果不事先声明另一个的话,都会报错找不到定义,那么我们事先声明A就没事了吗,也不是,像上面那样B中声明A的对象还是会出错,因为编译器不知道A的定义,无法生成类A的实例,所以会报错。一种改正方法是把对象实例变成对象指针,如下所示:

// Correctclass A;class B {public:    B(A *a): _a(a) {}private:    A *_a;};class A {public:    A(B *b): _b(b) {}private:    B *_b;};

本文转自博客园Grandyang的博客,原文链接:,如需转载请自行联系原博主。

你可能感兴趣的文章
贪婪与非贪婪模式
查看>>
vue router使用query和params传参的使用
查看>>
C++ noexcept
查看>>
C++ auto_ptr
查看>>
sdut 2136 数据结构实验之二叉树的建立与遍历(二叉树遍历,叶子数和深度)
查看>>
beta冲刺随笔集合
查看>>
与副交流后总结
查看>>
C#中描述mssql中DateTime的最小值、最大值
查看>>
【转】TestNG 与 Junit的比较
查看>>
SSH-Hibernate+Struts2+Spring的股票项目整合
查看>>
步步为营 .NET 代码重构学习笔记 四、临时变量(Temporary Variable)
查看>>
反射的案例
查看>>
RN相关命令
查看>>
在阿里云创建子域名,配置nginx,使用pm2部署node项目到ubuntu服务器
查看>>
Redmine 数据库连接错误
查看>>
js 关于运算顺序的问题
查看>>
javascript设计模式:(三)
查看>>
C# 调用FLashPaper2(二)
查看>>
Linux初学(三)
查看>>
JS简易时钟
查看>>