错误"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。

相关内容

最新更新