我正在使用multimap来使用openframeworks存储一些数据。我能够创建多图,但当我尝试在其中打印数据时,我只能打印内存地址而不是获取值。
参考(“在地图中存储对象”一节):http://openframeworks.cc/ofBook/chapters/stl_map.html
.h文件:
class xyPos {
public:
float x, y;
xyPos(float xPos, float yPos) {
x = xPos;
y = yPos;
}
//return ofVec2f(x, y);
};
static multimap<string, xyPos> posMap;
static multimap<string, xyPos>::iterator xyMapIterator;
.cpp文件:
for(int i = 0; i < 10; i ++) {
for(int j = 0; j < 10; j ++) {
posMap.insert(make_pair("null", xyPos(i, j));
}
}
我也尝试过:
for(int i = 0; i < 10; i ++) {
for(int j = 0; j < 10; j ++) {
xyPos *p = new xyPos(i, j);
xyMap.insert(make_pair("null", *p);
}
}
cout << "xyMap:\n";
for(xyMapIterator = xyMap.begin(); xyMapIterator != xyMap.end(); ++ xyMapIterator) {
cout << (*xyMapIterator).first << " => " << (*xyMapIterator).second << "\n";
} //will only compile with &(*xyMapIterator).second so i only have ["null", memory address] in the output
答案 0 :(得分:0)
此代码甚至无法编译。
无论如何,(*xyMapIterator).second
(可以写成xyMapIterator->second
)的类型为xyPos
,因此您无法使用cout
进行打印。
可能你需要打印它的值:
std::cout << xyMapIterator->second.x << "," << xyMapIterator->second.y << std::endl;