2013-12-18 41 views
0

我有這樣的代碼的選項錯誤 「無效操作數的二進制表示」

class Options { 
    ... 
    hash_map<string, Option> options; 
    private: 
    .... 
} 

的XCode(這是我使用的IDE),標誌着該地區「ITER

void Options::printHelp() { 
    hash_map<string, Option>::iterator iter; 
    for (iter = options.begin(); iter != options.end(); iter++) { //<- this one 
     cout << iter->first; 
     cout << "\t"; 
     cout << iter->second.getDescription() << "\n"; 
    } 
} 

定義!= options.end()「,並給我在標題中指定的錯誤。 我似乎無法弄清楚爲什麼。 (可選,順便說一句,是一個小的容器類,可以容納2個字符串和一個枚舉)

+0

爲了上帝的緣故,使用typedef,你喜歡輸入hash_map :: iterator,如果你需要改變容器類型搜索和替換到處? – Slava

+1

「選項」的完整定義是什麼?如果你使用C++ 11,你可以使用'auto'讓你的生活變得更容易。 – detunized

+0

不是說這會解決你的問題,但你應該預先增加interators(++ iter)。 – IdeaHat

回答

2

很難說沒有看到options的定義究竟是什麼問題。我的猜測是這不是hash_map<string, Option>類型。

如果你儘管寫你的代碼像這樣,你不應該運行到諸如此類的問題:

for (auto iter = options.begin(), end = options.end(); iter != end; ++iter) { 
    cout << iter->first; 
    cout << "\t"; 
    cout << iter->second.getDescription() << "\n"; 
} 

甚至更​​好:

for (auto &i: options) 
    cout << i.first << '\t' << i.second.getDescription() << '\n'; 

這就要求C++ 11 。

相關問題