无法从multimap打印值

时间:2016-07-07 21:13:16

标签: c++ multimap openframeworks

我正在使用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

1 个答案:

答案 0 :(得分:0)

此代码甚至无法编译。

无论如何,(*xyMapIterator).second(可以写成xyMapIterator->second)的类型为xyPos,因此您无法使用cout进行打印。

可能你需要打印它的值:

std::cout << xyMapIterator->second.x << "," << xyMapIterator->second.y << std::endl;