Seite 1 von 1

QPair fehlt operator==!?

Verfasst: 6. Juli 2009 13:34
von taraquedo
Hallo!

Ich blicke es gerade nicht. Warum soll der Operator == fehlen und wozu braucht ihn der Compiler an der Stelle überhaupt? Hier das Beispiel:

Code: Alles auswählen

  QMap<QPair<quint8, quint8>, SomeObject> myMap;
  foreach (SomeObject object, myMap)
    {
      QPair<quint8, quint8> myPair = myMap.key(object);
    }
Es kracht in der Schleife mit folgender Fehlermeldung:
qt-4.5.2/include/QtCore/qmap.h:792: Fehler: no match für »operator==« in »i.QMap<Key, T>::const_iterator::value [with Key = QPair<unsigned char, unsigned char>, T = State]() == avalue«

Was kann ich nun machen?

Grüße!

Verfasst: 6. Juli 2009 14:01
von Troll.Soft

Code: Alles auswählen

  QMap<QPair<quint8, quint8>, QString> myMap; 
  foreach (QString object, myMap) 
    { 
      QPair<quint8, quint8> myPair = myMap.key(object); 
    }
hm, mein Compiler zeigt keine Fehler an.
MS VC 2008. Der Code sieht auch grundsätzlich ordentlich aus.

Schau mal in die Doku von QPair und entdecke das es einen == Operator gibt. Die QString Klasse hat so einen Operator. Hat Deine Klasse ihn auch?
Wenn nicht, mußt Du ihn wohl schreiben.

tschüß
Trollsoft

Verfasst: 6. Juli 2009 14:48
von taraquedo
Hi!

Das ist echt seltsam. Die Tatsache, dass bei mir SomeObject nicht von QObject ableitet ist ja eigentlich auch nicht weiter tragisch, oder? Mir sieht es jetzt so aus, als ob QMap dieser Operator für QPair fehlt. Denn er bietet mir auch diverse andere an. Ist übrigens gcc4.3.3 unter Ubuntu.

Habe es jetzt erstmal mit Iteratoren gelöst. Wenn ich einen Iterator einsetze und dann i.key() aufrufe, dann führt es zu keinem Problem.

Grüße!

Verfasst: 6. Juli 2009 16:10
von Christian81
QObjects können nicht kopiert werden...