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