IUn*_*own 1 c++ iterator stl map
我有以下代码:
map<StatTypesEnum, ValueHandler*>::const_iterator itr;
for(itr=player1->Stats.begin(); itr!=player1->Stats.end(); itr++)
{
cout << "Stat: " << itr->first << " Value: " << (ValueHandler*)(itr->second)->getValue() << endl;
}
Run Code Online (Sandbox Code Playgroud)
getValue()方法返回一个int.如果我在迭代器之外输出值,它会以base10十进制显示,但是当我使用迭代器返回值时(如上所示),它显示在base16,hex中.
为了完整起见,以下行显示为base10:
cout << player1->Stats[Power]->getValue() << endl;
Run Code Online (Sandbox Code Playgroud)
我想迭代器显示base10.
谢谢.
打印时,(ValueHandler*)(itr->second)->getValue()您应该获得十六进制值,因为这是指针的打印方式.您可能不应该将返回值转换getValue()为a ValueHandler*.您可能打算转换itr->second为该指针类型(虽然没有必要),但只是括号错了.这是铸件的itr->second样子:
((ValueHandler*) itr->second)->getValue()
Run Code Online (Sandbox Code Playgroud)
你想要的可能是:
itr->second->getValue()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
348 次 |
| 最近记录: |