【发布时间】:2014-07-28 10:58:59
【问题描述】:
我正在尝试实现一个简单的状态机。但是,当我遇到一个特殊的错误时:
State.cp:7:1: error: 'eState' does not name a type
eState CState::eGet(){
^
eState 是 CState 类的枚举数:
#ifndef __STATE_H
#define __STATE_H
#include <string>
class CState {
public:
enum eState {
eData,
eInterface,
ePresentation,
eExit
};
它(目前,非功能性地)返回如下:
private:
eState Current;
public:
estate eGet();
eGet() 的定义如下:
eState CState::eGet(){
return Current;
};
我正在尝试使用 .eGet() 作为开关值,但我的主函数告诉我枚举值没有“在此范围内声明”
现在显然,我可以将枚举器移动到 "Common.h" 文件并让每个人都使用 #include,但它显然属于状态类,所以我更愿意保留它。
【问题讨论】:
-
你需要给返回类型一个明确的命名空间吗?
CState::eState CState::eGet(){ return Current; }