簡體   English   中英

錯誤“二進制表達式的操作數無效”

[英]error “invalid operands to binary expression”

我有這個代碼

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";
    }
}

選項的定義

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

XCode(我正在使用的IDE)標記區域“iter!= options.end()”並給出標題中指定的錯誤。 我似乎無法弄明白為什么。 (選項,順便說一句,是一個小容器類,它包含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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM