我有以下代码:

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;
}

getValue()方法返回一个int。如果我在迭代器外部查找该值,它将以base10十进制显示,但是当我使用迭代器(如上)返回该值时,它将以base16(十六进制)显示。

为了完整起见,以下行显示为base10:
cout << player1->Stats[Power]->getValue() << endl;

我希望迭代器显示base10。

谢谢。

最佳答案

当您打印(ValueHandler*)(itr->second)->getValue()时,您应该得到一个十六进制值,因为这是指针的打印方式。您可能不应该将getValue()的返回值转换为ValueHandler*。您可能打算将itr->second强制转换为该指针类型(尽管不是必需的),但括号却弄错了。这是强制转换itr->second的样子:

((ValueHandler*) itr->second)->getValue()

而您想要的可能是:
itr->second->getValue()

关于c++ - C++ STL Map迭代器输出十六进制值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8131543/

10-13 04:00