Solve Error: 'has incomplete type', foward declaration of 'class x'

简介:

在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的实例,所以会报错。一种改正方法是把对象实例变成对象指针,如下所示:

// Correct
class A;

class B {
public:
    B(A *a): _a(a) {}
private:
    A *_a;
};

class A {
public:
    A(B *b): _b(b) {}
private:
    B *_b;
};

本文转自博客园Grandyang的博客,原文链接: Solve Error: 'has incomplete type', foward declaration of 'class x',如需转载请自行联系原博主。

相关文章
|
Java Spring 容器
【二十二】springboot整合拦截器实战并对比过滤器
【二十二】springboot整合拦截器实战并对比过滤器
466 0
|
11月前
|
Java API 开发者
告别“线程泄露”:《聊聊如何优雅地关闭线程池》
本文深入讲解Java线程池优雅关闭的核心方法与最佳实践,通过shutdown()、awaitTermination()和shutdownNow()的组合使用,确保任务不丢失、线程不泄露,助力构建高可靠并发应用。
|
域名解析 人工智能 安全
回答我!会不会搭建 DeepSeek 版个人知识库?
本文介绍如何基于 DeepSeek 模型创建 RAG 应用,帮助大家更好地管理和利用知识,提高效率和创新能力。
1122 15
回答我!会不会搭建 DeepSeek 版个人知识库?
|
网络协议 安全 API
WebSocket、Socket、TCP 和 HTTP 的差别与应用场景
WebSocket、Socket、TCP 和 HTTP 是网络通信中的四大“使者”,各具特色:HTTP 适合短时请求,TCP 稳定可靠,Socket 灵活定制,WebSocket 实现实时双向通信。本文用通俗语言解析它们的区别与应用场景,助你为项目选择最合适的通信方式。
3486 3
|
SQL 存储 关系型数据库
int(1) 和 int(10) 有什么区别?
在MySQL中,`int`类型后面的数字(如`int(1)`、`int(10)`)并不影响其存储范围,最大值仍为4294967295(无符号)。这些数字只有在配合`zerofill`使用时才有意义,用于显示时不足位数补0。例如,`int(4) zerofill`会将1显示为0001。这适用于需要固定长度编号的场景,如学号等。
587 3
int(1) 和 int(10) 有什么区别?
|
数据库 C++
【数据结构进阶】红黑树超详解 + 实现(附源码)
本文深入探讨了红黑树的实现原理与特性。红黑树是一种自平衡二叉搜索树,通过节点着色(红/黑)和特定规则,确保树的高度接近平衡,从而实现高效的插入、删除和查找操作。相比AVL树,红黑树允许一定程度的不平衡,减少了旋转调整次数,提升了动态操作性能。文章详细解析了红黑树的性质、插入时的平衡调整(变色与旋转)、查找逻辑以及合法性检查,并提供了完整的C++代码实现。红黑树在操作系统和数据库中广泛应用,其设计兼顾效率与复杂性的平衡。
4262 3
|
Ubuntu Unix Shell
sh执行脚本报错Syntax error: “(“ unexpected ​的两种解决办法
​sh执行脚本报错Syntax error: “(“ unexpected ​的两种解决办法
|
文字识别 算法 API
文档解析(大模型版)能力测评
文档解析(大模型版)能力测评
995 8
|
缓存 监控 Java
内存泄漏:深入理解、检测与解决
【10月更文挑战第19天】内存泄漏:深入理解、检测与解决
1540 0
|
数据可视化
【Qt 学习笔记】Qt窗口 | 菜单栏 | QMenuBar的使用及说明
【Qt 学习笔记】Qt窗口 | 菜单栏 | QMenuBar的使用及说明
4989 3

热门文章

最新文章