我有一個Playlist
類,它具有一個向量Tracks
,每個Track
有一個multimap<long, Note>
作爲datamember。多圖迭代器不工作
class Track {
private:
multimap<long, Note> noteList;
}
使用迭代器來存取權限的曲目是沒有問題的,所以在這裏這部分工作正常:
vector<Track>::iterator trackIT;
try{
for(noteIT = trackIT->getNoteList().begin(); noteIT != trackIT->getNoteList().end(); noteIT++){
cout << "---" << noteIT->second.getName() << endl;
}
}catch (int e){
cout << "exception #" << e << endl;
}
我想接下來做的就是重複每個Track
的Notes
。但從這部分開始,所有輸出都停止。所以我只能看到第一首曲目的名字。之後的任何cout都沒有顯示,編譯器也沒有給我任何錯誤。即使try catch塊內COUT不工作..
vector<Track>::iterator trackIT;
multimap<long, Note>::iterator noteIT;
for(trackIT = this->playlist.getTracklist().begin(); trackIT < this->playlist.getTracklist().end(); trackIT++){
cout << trackIT->getTrackName() << endl;
for(noteIT = trackIT->getNoteList().begin(); noteIT != trackIT->getNoteList().end(); noteIT++){
cout << "---" << noteIT->second.getName() << endl;
}
}
cout << "random cout that is NOT shown" << endl; // this part doesn't show up in console either
而且,在我的田徑類中的方法,我使用添加的註釋對象是這樣的:
void Track::addNote(Note ¬e) {
long key = 1000009;
this->noteList.insert(make_pair(key, note));
}
// I'm adding the notes to the track like this:
Note note1(440, 100, 8, 1, 1);
note1.setName("note1");
synthTrack.addNote(note1);
任何想法爲什麼迭代器不會工作?
'Note'的拷貝構造函數可能有問題。 - 類型簽名不應該是'void Track :: addNote(const Note&note)'?或'void Track :: addNote(Note && note)'。 – leftaroundabout 2012-04-18 15:40:14
'this-> curMsr'的價值是什麼? – 2012-04-18 15:46:10
您是否檢查'notesIT'實際上是否在'trackIT-> end()'? 'this-> curMsr'的價值是什麼? – Grizzly 2012-04-18 15:46:19