关于error C2079: 'a' uses undefined class 'A'
来源:互联网 发布:如何提高思辨能力 知乎 编辑:程序博客网 时间:2024/06/11 20:54
在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"
...
- error C2079: 'a' uses undefined class 'A' .
- 关于error C2079: 'a' uses undefined class 'A'
- 关于error C2079: 'a' uses undefined class 'A' . 超前引用
- 超前引用问题---error C2079: '' uses undefined class
- 超前引用问题---error C2079: '' uses undefined class
- 超前引用问题---error C2079: '' uses undefined class
- error C2079: * uses undefined class 'CArray<TYPE,ARG_TYPE>'
- 超前引用问题---error C2079: '' uses undefined class
- 超前引用(类的提前声明)出错:error C2079: 'xxx' uses undefined class '***'
- VC中超前引用有关问题-error C2079: '' uses undefined class
- error C2079: 'lstr' uses undefined class 'std::basic_stringstream<_Elem,_Traits,_Alloc>'
- WinPcap编程错误:error C2079: 'IPAddress' uses undefined struct 'sockaddr_storage的解决办法
- Error: A library uses the same package分析和处理
- error C2079: CButtonST::m_ToolTip 使用未定义的 class CToolTipCtrl
- error C2027: useof undefined type 'A' see declaration of 'A'
- error C2079 使用未定义的class 和 error C2011 ‘class’类型重定义
- ERROR:A class was not written.
- error: not a class or struct name
- b/s开发中经常用到的javaScript技术
- 深刻剖析经典面试题之一:堆和栈的区别
- ORACLE DUAL表详解
- 定位滚动条的位置
- 利用双计算机调试游戏程序(转)
- 关于error C2079: 'a' uses undefined class 'A'
- samba不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重
- 数据库中一些基础概念
- hdu 2001 计算两点间的距离
- http://acm.pku.edu.cn/JudgeOnline/problem?id=1808 二次剩余式
- 常见的数据库对象
- 无线上网卡选购要素
- POSTFIX邮局系统搭建全过程
- http://acm.pku.edu.cn/JudgeOnline/problem?id=1284 (原根)