错误“二进制表达式的操作数无效”

时间:2013-12-18 18:48:05

标签: c++

我有这段代码

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个字符串和一个枚举)

1 个答案:

答案 0 :(得分: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。