2014-04-03 167 views
1

我正在尝试创建一个poptart自动售货机程序,并得到与我认为是指针相关的错误。当代码在屏幕上时,我没有得到任何问题,但是当我尝试构建代码时,出现错误,说'语法错误:缺少';'之前 '*'”C + +:指针问题

代码:

class State: public Transition 
{ 
protected: 
StateContext* currentContext; 
public: 
State(StateContext* Context); 
}; 

任何建议,将不胜感激。干杯

+0

其中是'StateContext'的定义? – Massa

回答

6

(偶尔C++编译错误信息可能有点神秘)。

您需要正向声明StateContext。类声明之前,包括线

class StateContext; 

然后在State实施,确保的StateContext类的声明是包括在内。

1

您需要包括StateContext定义或转发声明类StateContext和实现文件添加标题:

#include "StateContext.h" 

class State: public Transition 
{ 
protected: 
StateContext* currentContext; 
public: 
State(StateContext* Context); 
}; 

或:

class StateContext; 

class State: public Transition 
{ 
protected: 
StateContext* currentContext; 
public: 
State(StateContext* Context); 
}; 

向前声明允许您使用指针或引用只要你没有在这样一个指针或引用上调用任何方法(或使用它的数据),就不需要为这个类包含一个头部。

+0

任何想法,当我添加StateContext文件,因为#include'StateContext.h',我得到一个错误说,'致命错误C1014:太多包含文件︰深度= 1024' – user3158314

+0

是的,一些文件包含多次 – 4pie0