Instanzen von einer Klasse vergleichen

  • Hallo,
    ich bin noch ein C++ Anfänger. Ich würde gerne zwei Instanzen einer Klassen auf Gleichheit überprüfen, der Compiller spuckt aber immer folgenden Fehler aus:
    error C2678: Binärer Operator '==': Es konnte kein Operator gefunden werden, der einen linksseitigen Operanden vom Typ 'cZahl' akzeptiert (oder keine geeignete Konvertierung möglich)

    Hier folgt der Code:


    Hoffentlich könnt ihr mir helfen, denn ohne das Vergleichen von Instanzen werd ich nicht weit kommen :frowning_face:

  • ja, du musst eine methode schreiben, die die structs auf gleichheit überprüft (vergleich der einzelnen werte). die nennst du dann am besten isEqual o.ä. theoretisch könntest du auch noch den == operator überladen, aber das würde ich dir, wenn du ein anfänger bist, eher nicht raten :)

  • theoretisch könntest du auch noch den == operator überladen, aber das würde ich dir, wenn du ein anfänger bist, eher nicht raten :)

    Aber warum denn? Ist doch ganz einfach (das bring sogar ich als C++-Newbie zusammen :)):

    So ungefähr sollts jedenfalls gehen :winking_face:

  • "ungefähr".... der parametertyp in der methode ist auf einmal File anstelle von cZahl :winking_face:

    na dann lass mich mal was versuchen:

    ach, c++ ist schon huebsch, nur geht mir ein garbage collector ab...

    ps: identitaet (identisch) heisst, dass zwei objekte sich quasi auf dem selben speicherplatz befinden (es existiert eigentlich nur ein objekt, aber man kann auf dieses mit zwei variablen zugreifen). gleichheit besteht dann, wenn alle attribute beider objekte uebereinstimmen (was in dem bsp geprueft wird).
    somit sind identische objekte immer automatisch auch gleich -boah, zuviel "objektorientierte programmierung" intus :grinning_squinting_face:

  • ...

    PHP
    bool cZahl::Equal(const cZahl & other) const {
        return ((Wert1 == other.Wert1) && (Wert2 == other.Wert2));
    }

    es gibt vl. noch eine elegantere methode um die equal - funktion zu implementieren, und zwar ohne, dass der code davon abhängig ist welche membervariablen in den einzelnen klassen tatsächlich stecken:

    bool cZahl::Equal(const cZahl & other) const {
    return !memcmp (this, &other, sizeof (cZahl)) ;
    }

    damit kann man auch sehr leicht klassen vergleichen die mehr als nur die 2 ints beinhalten, ohne, dass man dabei jedes mal die equal funktion verändern & erweitern müsste.

    ein nachteil dieser variante ist natürlich, dass sie i.A. nicht mehr funktioniert, wenn die klasse pointer (beispielsweise strings, ...) als membervariablen enhält!

    lg, ES

    ¡Otras hijas tienen lindas madres también!

  • This phenomenal hearings thoroughly correct. Most of low statistics are prepared by making usage of large number about feel effective skills. We're anxious the software once a whole lot.This phenomenal hearings thoroughly correct. Most of low statistics are prepared by making usage of large number about feel effective skills. We're anxious the software once a whole lot.slot

  • Good post. I learn one thing more challenging on different blogs everyday. It’ll always be stimulating to read content from different writers and observe a bit something from their store. I’d choose to make use of some with the content on my weblog whether you don’t mind. Natually I’ll provide you with a hyperlink on your net blog. Thanks for sharing. 인천출장마사지

  • This will be the right blog for anyone who desires to be familiar with this topic. You recognize a great deal of its practically not easy to argue on hand (not too I really would want…HaHa). You actually put a new spin over a topic thats been written about for a long time. Fantastic stuff, just excellent!this site

  • Nice post. I find out something more difficult on different blogs everyday. Most commonly it is stimulating to learn content using their company writers and use a little something from their website. I’d prefer to use some while using the content in my small blog whether you do not mind. Natually I’ll give you a link on your own internet blog. Thank you sharing. fight shorts

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!