Hallo!
Ich bin dabei ein Programm von Qt3.3.3 nach Qt4.2.0 zu portieren. Alles lief bisher ohne Probleme ab doch nun habe ich, im Thema erwähnt, ein paar Probleme mit Qt4-headern - und zwar unter anderen mit qalgorithms.h. Der fehler sieht so aus:
e:\qt4\include\qtcore\../../src/corelib/tools/qalgorithms.h(348) : error C2678: Binary operator '-' not found (...)
Wenn ich den entsprechenden Code-Abschnitt auskommentiere - geht kompilieren, linken, starten ohne Probleme. Das will ich aber nicht als Lösung belassen...
Es kommen da noch ein paar andere Fehler - alle verweisen auf irgendeine header-Datei im Qt4/include Verzeichniss.
Qt4 ist wohl richtig installiert, da diese Fehler auch bei anderen Kollegen auftreten - und zwar sowohl bei VS2003+Qt4.1.1 als auch - wie bei mir - VS2005+Qt4.2.0.
Kann mir jemand nen Tipp geben?? Ich hab alle mir bekannten Qt-Foren dursucht, google gefragt - alles ohne Ergebnisse :/
[QT4.2] Problem mit Qt4 header-Dateien
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Was ist denn in der Zeile? Ist das wirklich der erste Fehler? Evtl. inkludierst Du aus Versehen noch alte qt3-Header. Wie sieht dein Code aus? Im Grunde kannst du es immer enger eingrenzen indem Du aus der Datei, in der der Fehler passiert, alels andere rausnimmst bis der Fehler nicht mehr auftritt.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Ich galaub' ich hab mich falsch ausgedrückt. Also der Fehler kommt in der Methode qSortHelper von qalgorithms (also nicht in meinem Code):
e:\qt4\include\qtcore\../../src/corelib/tools/qalgorithms.h(370) : error C2678: Binärer Operator '<': Es konnte kein Operator gefunden werden, der einen linksseitigen Operanden vom Typ 'QLinkedList<T>::iterator' akzeptiert (oder keine geeignete Konvertierung möglich)
Ich kommentiere den gesamten Inhalt von der qSortHelper Methode, dann gehts.
Aber Du hast mich auf die Idee gebracht im meinem Code die Stelle zu vermeiden, die qalgorithms verwendet. Bzw. die Stelle auf Qt4 zu umschreiben - weil soweit ich weiss ist qalgorithms für Qt3 kompatibilität verantwortlich.
@Hass
Ich benutzte VS2005 "ohne" .pro File, daher würde "QT += qt3support" nichts bringen. Allerdings habe ich die Makros definiert QT3_SUPPORT;QT3_SUPPORT_LIB - es sollte laut Doku reichen.
edit: DQT3_SUPPORT definieren ändert auch nichts
Danke für erste für Eure Antworten! Ich meld' mich dann wie die Lage auf dem Schlachtfeld aussieht
e:\qt4\include\qtcore\../../src/corelib/tools/qalgorithms.h(370) : error C2678: Binärer Operator '<': Es konnte kein Operator gefunden werden, der einen linksseitigen Operanden vom Typ 'QLinkedList<T>::iterator' akzeptiert (oder keine geeignete Konvertierung möglich)
Ich kommentiere den gesamten Inhalt von der qSortHelper Methode, dann gehts.
Aber Du hast mich auf die Idee gebracht im meinem Code die Stelle zu vermeiden, die qalgorithms verwendet. Bzw. die Stelle auf Qt4 zu umschreiben - weil soweit ich weiss ist qalgorithms für Qt3 kompatibilität verantwortlich.
@Hass
Ich benutzte VS2005 "ohne" .pro File, daher würde "QT += qt3support" nichts bringen. Allerdings habe ich die Makros definiert QT3_SUPPORT;QT3_SUPPORT_LIB - es sollte laut Doku reichen.
edit: DQT3_SUPPORT definieren ändert auch nichts
Danke für erste für Eure Antworten! Ich meld' mich dann wie die Lage auf dem Schlachtfeld aussieht
ok, hab den Sündenbock für den qalgorithms-Fehler gefunden: ich lass qSort() auf Q3ValueList laufen - wenn ich diese Zeile auskommentiere kommen die Fehler nicht. Das würde wieder auf qt3-inkopatibilität hinweisen, ich nutze aber tonnenweise Q3-Support Klassen und es kommen keine fehler... komisch...
edit: zu früh gefreut...
Ich hab die Liste durch eine QLinkedList eretzt, aber der Fehler kommt immernoch...
edit2:
Ok, LinkedList war das Problem, genauer: deren Iterator. Der weigert sich subtrahiert zu werden
QList genommen und gut ist. 
edit: zu früh gefreut...
Ich hab die Liste durch eine QLinkedList eretzt, aber der Fehler kommt immernoch...
edit2:
Ok, LinkedList war das Problem, genauer: deren Iterator. Der weigert sich subtrahiert zu werden