Operator überladen



  • Hallo,

    ich habe ein kleines Problem in C++ bei dem ich leider nicht weiter komme.

    Es soll folgendes aufgerufen werden: Klasse1 + 2 * Klasse1::KLASSE2;

    Klasse 1 sieht wie folgt aus:

    class Klasse1 {

    public:
    static Klasse2 KLASSE2;

    };

    class Klasse2 {
    public:
    static int nummer();
    }

    int Klasse2::nummer(){return 1;}

    Nun zu meiner eigentlichen Frage. Ich müsste ja den Operator überladen, um 2* Klasse1::KLASSE2 ausführen zu können. Doch leider hab ich keinen Ahnung wie es hier funktionieren soll.

    Probiert habe ich es unter anderem so:

    friend Klasse1 operator* (const Klasse2 b, const int i)
    {
    //.….

    }

    Wäre super, wenn mir jemand helfen könnte.

    Danke schon mal!



  • Da du 2 * Klasse1::KLASSE2 schreibst, musst du den int auch als ersten Parameter bei deinem Operator verwenden.

    Aber was soll denn Klasse1 + 2 * Klasse1::KLASSE2 bedeuten? Du kannst doch nicht eine Klasse mit einem Objekt addieren. Und warum nennst du ein Objekt KLASSE2 und nicht objekt2 oder vielleicht sogar vernünftig?



  • Danke schon mal für deine Antwort.
    Selbst wenn ich int als erstes übergebe funktioniert es nicht.

    Klasse 1 sind eigentlich Atomkerne. In Klasse 2 sind Neutronen.

    Damit ist es jetzt glaube ich besser verständlich was Klasse1 + 2 * Klasse1::KLASSE2 bedeuten soll.

    Ich habe bereits einen Operator, der Atomkern mit Neutron addieren kann. Nur die Multiplikation mit dem Neutron bekomm ich nicht hin.



  • agbt schrieb:

    Danke schon mal für deine Antwort.
    Selbst wenn ich int als erstes übergebe funktioniert es nicht.

    Klasse 1 sind eigentlich Atomkerne. In Klasse 2 sind Neutronen.

    Damit ist es jetzt glaube ich besser verständlich was Klasse1 + 2 * Klasse1::KLASSE2 bedeuten soll.

    Ich habe bereits einen Operator, der Atomkern mit Neutron addieren kann. Nur die Multiplikation mit dem Neutron bekomm ich nicht hin.

    Zeig doch mal den Code. Außerdem kannst du keine Klasse addieren, nur ein Objekt der Klasse. Meinst du vielleicht Klasse1() + 2 * Klasse1::KLASSE2 ?



  • erledigt



  • -Hör auf, deine Parameter const zu machen. const-Referenzen sind sinnvoll, const-Parameter nicht.
    -Objekte sollte man nicht in CAPS LOCK schreiben. Das wird per Konvention nur für Makros benutzt.
    -Mach lieber eine Klasse Elementarteilchen und lege davon die Objekte Proton, Neutron und Elektron an. (oder du machst eine enum{proton, neutron, elektron}, die du dann im Konstruktor übergibst.
    -Poste deinen Code so:
    [cpp]
    code
    [/cpp]
    -und dann lies dir das durch: http://www.c-plusplus.net/forum/304133



  • Okay das mit dem const werde ich ändern.

    Punkt 2 & 3 sind so vorgegeben, daran kann ich leider nichts ändern.

    Punkt 4: Werde ich in Zukunft berücksichtigen

    Hast du noch eine Idee, wie man diese Multiplikation realisieren könnte?



  • agbt schrieb:

    Hast du noch eine Idee, wie man diese Multiplikation realisieren könnte?

    Schau dir mal folgendes an: http://magazin.c-plusplus.net/artikel/�berladung von Operatoren in CPlusPlus (Teil 1)

    Wenn dann noch Fragen da sind, Code posten und konkrete Fragen stellen.


Anmelden zum Antworten