我试图用enum
(具有允许的参数)实现类(C++)。我有一个工作解决方案,但如果我尝试扩展功能,我卡住了。在字符串类中枚举
部首data_location.hpp
class DataLocation
{
private:
public:
enum Params { model, period };
std::string getParamString(Params p);
};
方案data_location.cpp
string DataLocation::getParamString(Params p){
static const char * ParamsStrings[] = {"MODEL", "PERIOD"};
return ParamsStrings[p];
}
阵列ParamsStrings
应在类一般可用,因为我需要的第二种方法(具有反函数)返回enum
值给出一个串。
如果我尝试定义头中的阵列我得到的错误:
in-class initialization of static data member ‘const char* DataLocation::ParamsStrings []’ of incomplete type
为什么类型不完整?编译器肯定能够对数组中的字符串进行计数,不是吗?
如果没有办法让我的代码工作,有没有其他方法? 1)没有XML; 2)没有字符串的双重定义; 3)不在课外; 4)代码编程映射中没有。
你必须声明在头的阵列,且在其定义CPP。 – Zereges
你的问题归结为“我如何定义静态类成员?”有足够的现有代码。另外,如果您想要解释错误消息,请提供完整(但最少)的示例代码。 –
感谢您的意见。你是对的,看到我的评论@ blazs的答案 – LiPo