Vergleich zweier Instanzen

  • Meine Frage:

    Wie gehe ich in C++ vor, wenn ich zwei Instanzen auf ihren Inhalt vergleichen möchte ?

    Wäre nett, könnte mir jemand antworten

    Schönen Abend noch

    Reinhard

  • Entweder du implementierst eine hash-methode und vergleichst den Rückgabewert, oder du implementierst eine Vergleichsmethode in der Klasse, die via accessors die Werte der anderen Instanz abfragt und mit den eigenen vergleicht.

    [font=verdana,sans-serif]"An über-programmer is likely to be someone who stares quietly into space and then says 'Hmm. I think I've seen something like this before.'" -- John D. Cock[/font]

    opentu.net - freier, unzensierter Informationsaustausch via IRC-Channel!
    Hilfe und Support in Studienangelegenheiten, gemütliches Beisammensein, von und mit Leuten aus dem Informatik-Forum!

  • Kenne mich nicht wirklich aus, also ich muss zwei Instanzen auf deren Inhalt vergleichen, in welcher mer drinnen ist. (z.B:Geld)

    Also ich muss die Operatoren < , >, ==, != überladen .

    Dazu muss ich die jeweiligen Methoden definieren

    zum Beispiel bool Hallo::operator< (Hallo b) {
    return a.summe <b.summe ;


    main () {
    Hallo a;
    Hallo b; //Name der Klasse "Hallo"

    a.summe < b.summe; // Aufruf der Operatormethode


    Was mach ich falsch, behandeln das kapitel erst in drei Wochen, möchte aber meine Aufgaben schon früher fertig stellen.

    summe ist eine public Instanzvariable

    Wäre nett könnte mir jemand helfen

  • Zitat

    Original geschrieben von Reinhard

    Code
    bool Hallo::operator< (Hallo  b) {                        return  a.summe  <b.summe   ;                                                main () { Hallo a; Hallo b;       //Name der Klasse "Hallo"a.summe < b.summe;        // Aufruf der Operatormethode }

    Ich schätz a ist undefiniert in der operator-funktion. Versuchs mal mit return summe < b.summe;

    Ah ja, und du musst dann (a<b) verwenden, nicht (a.summe<b.summe).

    [font=verdana,sans-serif]"An über-programmer is likely to be someone who stares quietly into space and then says 'Hmm. I think I've seen something like this before.'" -- John D. Cock[/font]

    opentu.net - freier, unzensierter Informationsaustausch via IRC-Channel!
    Hilfe und Support in Studienangelegenheiten, gemütliches Beisammensein, von und mit Leuten aus dem Informatik-Forum!

  • dankeschön, da war der Fehler, aber warum kennt er in dieser Methode das a nicht (a ist eine Instanz) ?

    Auf jeden Fall dankeschön, mein Programm ist nun fertig.

    Schönen Tag, Reinhard

  • Deine Überladung ist in dem Beispiel außerdem sinnlos, weil du im Endeffekt sowieso die summen mit dem Standartoperator vergleichst. Wenn du deine Methode verwenden willst musst du die Instanzvariable weglassen. Es reicht:
    a < b zu schreiben.

    a hat nur im Hauptprogramm den Namen a.
    In den Methoden der Klasse kannst du mit this oder nur den Namen der Instanzvariablen arbeiten.

    Alles ist möglich, die Frage ist nur wer's programmiert!

  • wenn du in c++ zwei instanzen einer klasse vergleichen möchtest, dann geht das ganz einfach mit ==
    außer du hast natürlich pointer.
    == überschreiben brauchst du nur, wenn du etwas anderes vergleichen willst, als den ganzen inhalt. (also zb nur eine membervariable)

    intelligenz * schönheit = const

Jetzt mitmachen!

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