关于error C2079: 'a' uses undefined class 'A' . 超前引用

发布时间:2017-1-18 15:53:50 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"关于error C2079: 'a' uses undefined class 'A' . 超前引用",主要涉及到关于error C2079: 'a' uses undefined class 'A' . 超前引用方面的内容,对于关于error C2079: 'a' uses undefined class 'A' . 超前引用感兴趣的同学可以参考一下。

在a.h中有:    class A{ ... }   类A对应的实现部分在 a.cpp中     在b.h中有:   class A;   class B{ ... ... A a;   /* 错误 */ }   其实现文件b.cpp中: #include "b.h" #include "a.h"   ...     以上的代码段在编译的时候会出现 error C2079: 'a' uses undefined class 'A'   原因(个人理解):   在编译阶段会为每种类型的类分配空间, 其中包括为其数据成员分配空间. 类B在编译的时候, 会为其数据成员a分配内存空间.   但由于类A的定义在类B之后定义, 编译器不知道该怎么为a分配相应的内存空间, 从而导致出现了 use of undefined class "A"     解决方案1:   在定义类B的数据成员时, 使用指针形式(A *a), 因为指针实际上是一个地址(4个字节), 在特定的编译环境下是不变的, 编译器能通过.   而后在其构造函数或其以后的其他地方进行初始化(a=new A()), 即可正常使用.     解决方案2:   调换 b.cpp中  #include "b.h" 和 #include "a.h"  的位置, 即:   文件b.cpp中: #include "a.h" #include "b.h"         采用了方法二,问题解决,方法一没细看

上一篇:把SQL语句查到的表中最大最小的ID值、并赋给变量
下一篇:iOS 应用sendAsynchronousRequest 异步代码块下载

相关文章

相关评论