Qt 的 foreach 函数有点问题。我有一个类 Phrase,它是 QList 的子类。在 ~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 的深层副本——这意味着这些指针将被删除两次。(或者,删除一次,然后崩溃。)所以我必须使用这个,它有效但不太漂亮。
for(int i=0; i<phrase->count(); i++ )
{
GlossItem *glossItem = phrase->at(i);
// use glossItem
}
有没有办法解决这个问题,还是我只需要忍受它?