Überladung von operator==



  • Hallo!

    Folgendes Problem:
    Ich habe eine Klasse und erstelle in einem Programm zwei Zeiger auf Objekte dieser Klasse. Nun möchte ich mir den Operator == überladen, damit ich diese beiden Objekte vergleichen kann. Ich habe es so probiert:

    friend bool operator==(JedecFile*, JedecFile*);
    

    und eine entsprechende Funktion angelegt, allerings bekomme ich die Fehlermeldung:

    error C2803: 'operator ==' must have at least one formal parameter of class type

    Wie kann ich mir eine Überladung erstellen, die auf beiden Seiten Zeiger akzeptiert?



  • Geht nicht, ist ja auch logisch. Wenn du zwei Pointer vergleichst kommt raus ob sie auf den selben Speicherbereich zeigen, da musst du nichts machen. Aber du kannst ja den operator jeweils JedecFile const& erstellen.



  • Wie müßte das dann genau aussehen? Hab das noch nicht so ganz verstanden.

    Edit: Nur zur Sicherheit:
    Ich will ja auch den Inhalt der Objekte vergleichen. Mir ist schon klar, dass ein Adressvergleich wenig Sinn macht. Wenn ich die Funktion so mache:

    friend bool operator==(JedecFile const&, JedecFile const&);
    

    bekomme ich beim Kompilieren folgenden Fehler:

    Error 1 error C2662: 'JedecFile::get_QF' : cannot convert 'this' pointer from 'const JedecFile' to 'JedecFile &'



  • dercmdr schrieb:

    Error 1 error C2662: 'JedecFile::get_QF' : cannot convert 'this' pointer from 'const JedecFile' to 'JedecFile &'

    Dann ist get_QF wohl nicht const. Dem Namen nach zu urteilen, sollte es das aber sein.


Log in to reply