2
我有一個映射,其中字符串表示屬性名稱,第二個值表示該屬性應具有的類型。屬性的C++映射類型
map.insert(make_pair("X", iDatatype::iUint));
map.insert(make_pair("Y", iDatatype::iUint));
map.insert(make_pair("RADIANT", iDatatype::iFloat));
其中iDatatype只是枚舉所有可能的類型。
typedef enum
{
iUnknown = 0,
iByte = 1,
iChar = 2,
iUChar = 3,
iShort = 4.....
} iDatatype;
如果程序得到命令創建,例如,「喜洋洋」比它看地圖,找到iDatatype值(iter->第二)和去切換情況。
switch (iter->second) {
case iDatatype::iUint:
uint value = ......
// You gotta do what you gonna do
break;
} .......
在Switch情況下,將調用取決於屬性類型的函數。
此代碼有效。但我不確定,如果它是用字符串映射字符串的最佳解決方案。 而我不知道該找什麼的問題?你能推薦什麼方法或技術常用於這種目的?萬分感謝。
而連連:我知道這是因爲官方有一段時間了,但是由於C++ 11及其實施的編譯器,對C +小詞,而年輕的年齡+ 11ness o f'std :: function'會比較合適。不是每個人都意識到你需要最新的gcc/VS /任何東西來使用它。當然,我並不是說「不使用C++ 11功能」,而是「提及它們」。 –
@ChristianRau:只是它的新功能並不意味着你需要在岩石下爬行,儘可能地使用C++ 1234BC的功能,並且總是警告新功能。 – Dani
不,使用它,這是一個好主意。但是不要指望新手(雖然這不需要支持OP)知道C++標準化過程,或者他的下一個問題是「爲什麼我的編譯器不能找到'std :: function'?」。 –