我試圖用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