error: field 'b' has imcomplete type
在下面的程序中,在编译时会遇到下面的错误:
error: field 'b' has incomplete type
域b是一个不完备的类型,即class B的声明不完备
1 #include <iostream> 2 using namespace std; 3 4 class A 5 { 6 private: 7 class B b; 8 public: 9 A(){cout<<"this is A constructor!"<<endl;} 10 }; 11 12 class B 13 { 14 public: 15 B(){cout<<"this is B constructor!"<<endl;} 16 }; 17 18 int main() 19 { 20 A a; 21 return 0; 22 }
分析:
出现该错误的原因是在声明class A的成员变量b时, b的类型 class B 还没有定义。
类或结构体的前向声明只能用来定义指针对象,当编译到7 class B b; 时还没有发现定义,
不知道该类或者结构的内部成员,没有办法具体的构造一个对象。
Debug:
将class B的定义放到class A之前即可编译通过
那么还有哪些情况下会出现这样的情况呢?
1. 在使用设计模式时,我们时常会用到工厂模式,当我们需要添加工序类的时候,往往习惯现在工厂类中定义工序的对象,然后在工厂类之后定义工序类,从而出现本文中的错误。
比较好的解决方法是,将工序类单独存放到一个头文件中,然后在工厂类所在文件中引用该头文件。
2. 在使用STL容器的时候,往往忘记添加相应的头文件。如#include <vector>; #include <list>; #include <deque>等
转载于:https://www.cnblogs.com/double-win/p/3683550.html
error: field 'b' has imcomplete type相关推荐
- error: dereferencing pointer to incomplete type
/******************************************************************************** error: dereferenci ...
- ERROR: cannot launch node of type [pointcloud_to_laserscan/pointcloud_to_laserscan]
尝试使用TIAGo机器人进行SLAM时,运行 roslaunch tiago_2dnav_gazebo tiago_mapping.launch public_sim:=true 指令时加载TIAGo ...
- error: invalid use of incomplete type 'XXXX' ;error: forward declaration of 'XXXX' 声明改为包含头文件
error: invalid use of incomplete type 'XXXX' error: forward declaration of XXXX 声明改为包含头文件 class XXXX ...
- LocalDateTime日期转换错误:JSON parse error: Cannot deserialize value of type java.time.LocalDateTime
LocalDateTime日期转换错误:JSON parse error: Cannot deserialize value of type java.time.LocalDateTime 背景:实体 ...
- 网站部署后Parser Error Message: Could not load type 的解决方案
asp.net 的Webproject 项目是在64bit机上开发,默认选项发布后,部署到32bit的服务器上,出现Parser Error Message: Could not load type的 ...
- kafka报错:Error writing out kafka.log:type=Log,name=LogStartOffset,topic=xx EofException
文章目录 1.美图 2.背景 1.美图 2.背景 cdh启动kafka报错,错误代码如下 Error writing out kafka.log:type=Log,name=LogStartOffse ...
- c语言结构体菜单显示框架,请教c语言结构体嵌套问题。field `atItem' has incomplete type...
//菜单项结构体 typedef struct { BYTE aucItemName[20]; //菜单项的内容 WORD32 dwItem ...
- phpredis报错信息:protocol error, got ‘o‘ as reply type byte解决方案
phpredis报错信息:protocol error, got 'o' as reply type byte解决方案 参考文章: (1)phpredis报错信息:protocol error, go ...
- gcc编译出现:error: dereferencing pointer to incomplete type
使用gcc编译c文件出现如下错误: getIP.c:14: warning: implicit declaration of function 'gethostname' getIP.c:20: wa ...
最新文章
- dacom蓝牙耳机怎么重置_双蓝牙耳机另一半怎么连接
- 机器学习奠基人Michael Jordan:下代技术是融合经济学,解读2项重要进展(含PPT)...
- access 一亿条数据_循环运算数据溢出
- (46)分析 INT 0x2E 和 sysenter
- 天平游码读数例题_电子天平偏载误差的检定与处理
- NSLog (Log信息的输出)
- 实时内核(Core)和实时操作系统(RTOS)有何不同?
- 20200317_决策树预测贷款申请
- iOS 8 自适应 Cell
- 做一个管理者/技术负责人的学习之路--001
- html5直播礼物动画,GitHub - General757/giftanim: 直播礼物动画 送赞送礼物动画 仿映客礼物动画侧栏弹出送花人和礼物以及x1 x2 x3效果,支持队列 排序...
- NVIDIA Jetson Xavier通过JetPack 4.1刷机教程(虚拟机版)
- 清歌输入法 for Mac(最好用的五笔输入法
- 北京汽车转型背后:“大北汽”棋局中的变与不变
- 三国论(11-15章)
- 计算机、软件学硕与专硕的区别
- 【单片机学习】独立按键的扩展应用
- 一个简单的循环往复的动画效果
- matlab中datax,菜鸟学飞--matlab系列1
- 对开源操作系统最友好的龙芯
热门文章
- 知乎上-翻车的笔记本
- 定位低效SQL与不同的Extra类型(转载)
- ROC和AUC介绍以及如何计算AUC(转载+自己重新排版整理)
- Provided path doesn't exist. pylama Please fix pylama path or install latest version(UBuntu版本下的情况)
- pythondockerapi_docker-py 用Python调用Docker接口的方法
- CUDA学习(五十一)
- Socket.IO for Unity 简要介绍
- 《UNIX网络编程 卷1:套接字联网API(第3版)》——第2章 传输层:TCP、UDP和SCTP 2.1概述...
- 《Android 游戏开发大全(第二版)》——6.4节角色扮演游戏
- 远程访问rest方式