Portál AbcLinuxu, 10. května 2025 08:10

Dotaz: iterace QMap v destruktoru

3.5.2011 11:27 Milan Bača | skóre: 2 | Valašské Meziříčí
iterace QMap v destruktoru
Přečteno: 145×
Odpovědět | Admin

Zdravím, mám menší problém a nevím jak ho vyřešit. Na řádku for(i = femagList.begin(); i!=femagList.end();++i) se aplikace vždy zhroutí. Mohl by mě někdo nakopnout správným směrem?

Controller::~Controller()

{

if (!femagList.isEmpty()) {

QMap<QString, Femag *>::iterator i;

for(i = femagList.begin(); i!=femagList.end();++i) {

emit calculationStop(i.key());

delete i.value();

femagList.erase(i);

}

}

}


Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (Milan Bača (tazatel))
3.5.2011 11:38 Jirka P
Rozbalit Rozbalit vše Re: iterace QMap v destruktoru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tím erasem si zneplatníš iterátor. Jedna možnost jak to napravit, je vyhodit ten erase ze smyčky a zavolat clear() po ní.
3.5.2011 12:37 Milan Bača | skóre: 2 | Valašské Meziříčí
Rozbalit Rozbalit vše Re: iterace QMap v destruktoru
dík moc to bylo ono :-)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.