Seite 1 von 1

QMap - Operator != nicht eindeutig

Verfasst: 28. Februar 2013 19:14
von Tilman Räger
Hallo,

mal wieder ein kleines Problemchen:

ich habe in meiner Anwendung eine QMap<QString, S4AHaspKeyInfo> definiert (S4AHaspKeyInfo ist eine von mir definierte Klasse die einen QString, einen Integers sowie einer QList<int> enthält.)
wenn ich jetzt versuche, durch diese Map mittels Iterator durchzulaufen mittels:

Code: Alles auswählen

QMap<QString, S4AHaspKeyInfo>::const_iterator It = KeyMap.constBegin();
while (It != KeyMap.constEnd())
{
    // do something
    ...
    It++;
}
bekomme ich (mit MS VisualStudio) immer den Fehler C2593: Operator != ist mehrdeutig, wobei er mir erzählt, er könne mit der Vorliegenden Argumentliste
QMap<Key, T>::const_iterator, QMap<Key, T>::const_iterator
nicht zwischen
Operator == (bool, bool)
und
Operator == (QMapData::Node*, QMapData::Node*)
unterscheiden. Kann mir vielleicht hier jemand auf die Sprünge helfen, wo mein Fehler (ich nehme mal an, das es mein Fehler ist :oops: ) liegt?

Im Voraus vielen Dank

Gruss
Tilman (Räger)

Re: QMap - Operator != nicht eindeutig

Verfasst: 28. Februar 2013 20:21
von Christian81
Ein richtiges Beispiel wäre nicht schlecht - also ein nur auf dieses Problem zusammengebastelte Beispiel. Und wo genau der Fehler auftritt wäre auch nicht schlecht zu wissen...

Re: QMap - Operator != nicht eindeutig

Verfasst: 1. März 2013 12:14
von anti-freak

Code: Alles auswählen

QMap<QString, S4AHaspKeyInfo>::const_iterator It = KeyMap.constBegin();
while ((QMapData::Node*)It != (QMapData::Node*)KeyMap.constEnd())
{
    // do something
    ...
    ++It;
}
ich denke das sollte das wohl lösen.
du solltest btw ++It statt It++ schreiben. bei It++ wird ein unnötiges object zurück gegeben, was unnötige operationen benötigt. bei ++It wird nur das eigentliche object zurück gegeben, ohne es zu kopieren.
(i++ hat als rückgabe wert i vor der inkrementierung, und ++i i nach der inkrementierung).