QMap - Operator != nicht eindeutig

Alles rund um die Programmierung mit Qt
Antworten
Tilman Räger
Beiträge: 189
Registriert: 6. Juni 2007 15:23
Wohnort: Göttingen

QMap - Operator != nicht eindeutig

Beitrag 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)
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: QMap - Operator != nicht eindeutig

Beitrag 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...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
anti-freak
Beiträge: 18
Registriert: 21. Juli 2012 22:54

Re: QMap - Operator != nicht eindeutig

Beitrag 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).
Antworten