我有这段代码
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个字符串和一个枚举)
答案 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。