ベクトルを持つPlaylist
クラスがありTracks
、それぞれTrack
にmultimap<long, Note>
as データメンバーがあります。
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;
}
次にやりたいことはNotes
、 eachの を反復することですTrack
。しかし、この部分からすべての出力が停止します。そのため、最初のトラック名しか表示されません。その後の 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
また、Note オブジェクトを追加するために使用している Track クラスのメソッドは次のようになります。
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);
イテレータが機能しない理由はありますか?