2016-07-07 1 views
-4

私はマルチマップを使って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

カット[MCVE]までであり、それはmultimap'または反復 'とは全く関係ありません発見します。 – juanchopanza

答えて

0

このコードはコンパイルされません。

とにかく(*xyMapIterator).secondxyMapIterator->secondと書くことができます)のタイプはxyPosなので、coutを使用して印刷することはできません。

は、おそらくあなたは、その値を出力する必要があります。

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

私のプログラムのコードとまったく同じではないので、私はそれを間違って書いているかもしれません。そのために残念。しかし、応答のおかげで。私はそのように印刷するとは思わなかった。 – scribblePeople

関連する問題