Qtのforeach関数に少し問題があります。QListのサブクラスであるPhraseクラスがあります。〜Phraseで、すべてのGlossItemポインターを削除します。
PhraseのGlossItemポインターを反復処理する際に、Qtのforeachを使用したいと思います。
// phrase is a pointer to a Phrase object,
// which is a subclassed QList<GlossItem*>
foreach( GlossItem *glossItem , *phrase )
{
// use glossItem
}
何らかの理由で、foreachはPhraseでディープコピーを実行しています(コピーコンストラクターを実装する必要があったため、これを知っています)。ただし、Phraseのコピーがあり、各GlossItemの深いコピーを作成したくない場合は、それらのポインターが2回削除されることを意味します。(または、一度削除してからクラッシュします。)したがって、これを使用する必要があります。これは機能しますが、あまりきれいではありません。
for(int i=0; i<phrase->count(); i++ )
{
GlossItem *glossItem = phrase->at(i);
// use glossItem
}
これを回避する方法はありますか、それとも私はそれと一緒に暮らす必要がありますか?