本文主要是介绍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"
转载于:http://blog.csdn.net/oathevil/article/details/5805029
这篇关于error C2079: 'a' uses undefined class 'A' .的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!