繁体   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