Leider bekomne ucg ständig die Fehlermeldung: instantiated from here.
Leider bringt mir das rein gar nichts,
Und uns bringt das leider auch nicht weiter.
*) Du postest einen kleinen Ausschnitt aus der gesamten Fehlermeldung, der absolut nichtssagend ist.
*) Du gibsts uns keinen wirklich relevanten Code.
*) Deine Beschreibung, wie dein Code "funktioniert" bringt gar nichts.
Lösung:
Poste ein komplettes Codebeispiel. Reduziere dieses aufs Nötigste (keinen unnötigen Ballast wie Events, komplexe Widget-Layouts, Programm-Logik, ...). Einfach minimal eine main, eine Liste, die Objekte deiner Klasse hält, deine KLasse, die du auch im Programm in der Liste speichern willst, in der main fügst du Elemente in die Liste und versuchst eines zu löschen. Achte bitte darauf, dass dein Fehler auch auftritt. Ein funktionierendes Programm bringt nichts wenn man einen Fehler lösen will :P
Das sind die 3 'elementaren' Dinge.
Der Inhalt von Despawn ist nur zum Test da..
Ein richtiges Objekt suchen und dann zurückgeben kommt später rein.
Hilft euch das schon weiter?
grz
PS:
Genau Fehlermeldungen wie sie 1:1 in der IDE stehen:
'instantiated from bool QList<T>::removeOne(const T&) [with T = myObject]' (qlist.h)
'instantiated from here' (testfile.cpp)
'no match for 'operator==' in n->QList<T>::Node::t [with T = myObject]() == t'
Sehr schön, damit kann man arbeiten
Schau dir die Doku zu QList::removeOne() GENAU an. Da steht:
Zitat:
This function requires the value type to have an implementation of operator==().
Das bedeutet, dass du dir für dein "struct myObject" den operator== überladen musst.
Lies dir dazu diesen Artikel durch. Pass aber auf: du hast einen Member "const char*", den kannst du nicht mit "==" vergleichen. Wenn du keinen Grund hast solltest du hier gleich std::string (oder gleich QString, bist ja mit Qt unterwegs) verwenden, ist einfach bequemer :P
bool operator==(myObject const& lhs); //operator!= analog
C/C++ Code:
bool operator==(myObject const& lhs); //operator!= analog
C/C++ Code:
bool operator==(myObject const& lhs); //operator!= analog
das ganze sieht jetzt folgendermassen aus.
Laut compiler darf ich nur 1 Argument in den Parameter schreiben (myObject const& lhs, myObject const& rhs - wie in dem Artikel beschrieben) geht also nicht.
Ist das richtig so?
Das entfernen des Objekts aus der Liste funktioniert nun wie gewünscht.
Laut compiler darf ich nur 1 Argument in den Parameter schreiben (myObject const& lhs, myObject const& rhs - wie in dem Artikel beschrieben) geht also nicht.
Ist das richtig so?
Nein. Du hast dir den Text nicht genau durchgelesen. Da steht:
Zitat:
Wegen möglicher impliziter Konvertierungen des ersten Arguments werden die Operatoren als freie Funktionen definiert, die Argumente bleiben unverändert.
Es ist möglich, den operator== als Member-Funktion zu implementieren. Dann solltest du aber bitte die Funktion "const" machen. Aber (wie der Artikel auch sagt) solltest du den operator== als freie Funktion überladen.
Nächstes Thema anzeigen Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums
für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de
Werbekostenerstattung verdient werden kann.
Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de
enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt
(vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in
privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden.
Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere
übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.