我有一个这样的类,声明了一个公共枚举:
// DataStorage.h
class DataStorage
{
enum ActionType { ADD, REMOVE };
public :
data();
void update(ActionType action, Data dataItem);
};
然后我有一个使用它的Main.cc ......
// Main.cc
#include "DataStorage.h"
int main() {
DataStorage dataStorage;
Data dataItem("abc123");
dataStorage.update(ActionType.ADD, dataItem); <<-- error here
}
我的问题是当我编译时出现此错误:
Main.cc:29:18: error: ‘ActionType’ was not declared in this scope
我做错了什么?应该在哪里宣布枚举?我应该如何在主要使用它?
THX!
答案 0 :(得分:4)
更新
dataStorage.update(ActionType.ADD, dataItem);
为:
dataStorage.update(DataStorage::ADD, dataItem);
注意:You need to make enum type ActionType public
。
class DataStorage
{
public :
enum ActionType { ADD, REMOVE };
data();
void update(ActionType action, Data dataItem);
};
答案 1 :(得分:4)
以下代码应该可行(并且通过 c ++标准完全没问题):
// DataStorage.h
class DataStorage
{
public :
enum ActionType { ADD, REMOVE };
data();
void update(ActionType action, Data dataItem);
};
dataStorage.update(DataStorage::ADD, dataItem);
如果您想使用ActionType
标识引用枚举值,请使用新的c++11 enum class
功能(然后将解析为DataStorage::ActionType::ADD
)。