我有这个代码
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。