在下面的程序中,在编译时会遇到下面的错误:

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相关推荐

  1. error: dereferencing pointer to incomplete type

    /******************************************************************************** error: dereferenci ...

  2. 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 ...

  3. 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 ...

  4. LocalDateTime日期转换错误:JSON parse error: Cannot deserialize value of type java.time.LocalDateTime

    LocalDateTime日期转换错误:JSON parse error: Cannot deserialize value of type java.time.LocalDateTime 背景:实体 ...

  5. 网站部署后Parser Error Message: Could not load type 的解决方案

    asp.net 的Webproject 项目是在64bit机上开发,默认选项发布后,部署到32bit的服务器上,出现Parser Error Message: Could not load type的 ...

  6. 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 ...

  7. c语言结构体菜单显示框架,请教c语言结构体嵌套问题。field `atItem' has incomplete type...

    //菜单项结构体 typedef struct { BYTE                aucItemName[20];   //菜单项的内容 WORD32              dwItem ...

  8. phpredis报错信息:protocol error, got ‘o‘ as reply type byte解决方案

    phpredis报错信息:protocol error, got 'o' as reply type byte解决方案 参考文章: (1)phpredis报错信息:protocol error, go ...

  9. gcc编译出现:error: dereferencing pointer to incomplete type

    使用gcc编译c文件出现如下错误: getIP.c:14: warning: implicit declaration of function 'gethostname' getIP.c:20: wa ...

最新文章

  1. dacom蓝牙耳机怎么重置_双蓝牙耳机另一半怎么连接
  2. 机器学习奠基人Michael Jordan:下代技术是融合经济学,解读2项重要进展(含PPT)...
  3. access 一亿条数据_循环运算数据溢出
  4. (46)分析 INT 0x2E 和 sysenter
  5. 天平游码读数例题_电子天平偏载误差的检定与处理
  6. NSLog (Log信息的输出)
  7. 实时内核(Core)和实时操作系统(RTOS)有何不同?
  8. 20200317_决策树预测贷款申请
  9. iOS 8 自适应 Cell
  10. 做一个管理者/技术负责人的学习之路--001
  11. html5直播礼物动画,GitHub - General757/giftanim: 直播礼物动画 送赞送礼物动画 仿映客礼物动画侧栏弹出送花人和礼物以及x1 x2 x3效果,支持队列 排序...
  12. NVIDIA Jetson Xavier通过JetPack 4.1刷机教程(虚拟机版)
  13. 清歌输入法 for Mac(最好用的五笔输入法
  14. 北京汽车转型背后:“大北汽”棋局中的变与不变
  15. 三国论(11-15章)
  16. 计算机、软件学硕与专硕的区别
  17. 【单片机学习】独立按键的扩展应用
  18. 一个简单的循环往复的动画效果
  19. matlab中datax,菜鸟学飞--matlab系列1
  20. 对开源操作系统最友好的龙芯

热门文章

  1. 知乎上-翻车的笔记本
  2. 定位低效SQL与不同的Extra类型(转载)
  3. ROC和AUC介绍以及如何计算AUC(转载+自己重新排版整理)
  4. Provided path doesn't exist. pylama Please fix pylama path or install latest version(UBuntu版本下的情况)
  5. pythondockerapi_docker-py 用Python调用Docker接口的方法
  6. CUDA学习(五十一)
  7. Socket.IO for Unity 简要介绍
  8. 《UNIX网络编程 卷1:套接字联网API(第3版)》——第2章 传输层:TCP、UDP和SCTP 2.1概述...
  9. 《Android 游戏开发大全(第二版)》——6.4节角色扮演游戏
  10. 远程访问rest方式