总结:Compiler Error C2504

Compiler Error C2504

C2504:'class' : base class undefined
一般出现了这个错误,后面将跟随若干个成员函数,成员变量未定义的错误,这是因为这个undefined base class中的成员不能被识别造成的。
首先给出MSDN上的解释:
This error can be caused by a missing include file or an external base class that was not declared with the extern specifier.
就是说,没有包含头文件或者是未用extern声明的外部的基类。
1,没有include头文件的话include "相应的头文件"。
2,而未用extern声明的话,我觉得应该比较少见,也许个别版本存在可以使用extern声明外部基类,6.0版本应该不存在。C++讲究封装性,extern明显的破坏了封装性,而且只是声明了对象,不能理解跟基类未定义有什么关。
其他的几种可能:
3,在编写函数或类的时候,括号匹配出现错误,少了右括号(‘}’,‘)’),比较难发现。一般是在一个文件文件中少写了‘}’,而再基类的头文件中包含了这个文件,这可能使得基类定义那一部分被包含到前面的文件中,因为编译器认为一个类或函数结束的标志是‘}’,直到找到'‘}’。
4,头文件包含出现错误。比如,基类头文件包含了派生类的头文件。这种情况可能比较难找到错误的根源,特别是在类比较多,结构比较复杂的时候,这就需要我们平时十分的细心和耐心了。

原作于2012年8月23日

www.kingreturns.com
原文地址:https://www.cnblogs.com/ashboy/p/2867112.html