複数のリストになる可能性のあるオブジェクトがあります。
例えば
std::list<object*> lista = new std::list<object*>();
std::list<object*> listb = new std::list<object*>();
object* obj = new object();
lista->push_front(obj);
listb->push_front(obj);
両方のリストに同じ方法で配置されるオブジェクトが多数存在する可能性があります。スマート ポインターを使用するのは簡単なことだと思いますが、私をマゾヒストと呼んでください。
現在、私はこのテクニックを試しています:
td::list<object*>::iterator iter;
for(iter = lista->begin(); iter != lista->end(); iter++) {
delete (*iter);
*iter = 0;
}
std::list<object*>::iterator iterB;
for(iterB = listb->begin(); iterB != listb->end(); iterB++) {
if(*iterB != 0) {
delete (*iterB);
*iter = 0;
}
}
delete lista;
delete listb;
しかしdelete lista;
、実行時に相当するもので壊れます。ポインターについてもっと賢い人が私を助けてくれることを願っています。前もって感謝します!
PS Windows 7/MinGW を実行しています。