我的程序越大,我就会遇到问题.例如,我收到以下错误:
In file included from WidgetText.h:8, from LCDText.h:17, from WidgetText.cpp:13: Generic.h:21: error: expected class-name before ',' token
以下是这些行:
#include "Generic.h" // WidgetText.h:8 #include "WidgetText.h" // LCDText.h:17 #include "LCDText.h" // WidgetText.cpp:13 class Generic: public virtual LCDText, public CFG, public virtual Evaluator { // Generic.h:21
以下是各种头文件的内容:
//Generic.h #include "CFG.h" #include "Evaluator.h" #include "LCDText.h" #include "Widget.h" //WidgetText.h #include "Generic.h" #include "Property.h" #include "Widget.h" //LCDText.h class Generic; #include "LCDBase.h" #include "WidgetText.h"
这并没有提供太多; 我知道.我不确定还包括什么.每个标头定义一个以其标头命名的类,因此LCDText.h有一个名为LCDText的类.
在LCDText.h中声明类'Generic'的一行必须放在那里,因为早期的问题与此类似.我假设当前的问题有一个类似的解决方案,但到目前为止我找不到它.
你有一个循环依赖:Generic.h包括LCDText.h,其中包括WidgetText.h,其中包括Generic.h; 错误源于这个基本问题.如果您可以重新设计标题以消除此循环,则错误可能会在重构中解决,或者问题将变得比现在更加明显.