Operator [] überladen



  • Hallo,

    Ich würde gerne die Operator 2 Mal überladen. Einmal, damit er Daten ausliest und zum 2., um die Daten zu setzen.

    Ist das überhaupt möglich?

    short operator[](int Obj);
    

    damit lese ich den Code aus.

    Jetzt würde ich gerne einen Operator überladen der folgende Zeile nimmt:

    var x[3] = 5
    

    jetzt würde ich gerne nen überladenen Operator haben, der sowohl die 3 als
    auch die 5 bekommt...

    Ist das möglich?

    Herzlichen Dank 🙂
    Gruss,
    Mathias



  • Ja, du musst eine Referenz zurückliefern:

    short& operator[](int Obj);
    

    Das ist dann der Prototyp der Methode. Der Rest bleibt gleich.
    Durch die Referenz kann die Original-Variable geändert werden.

    Edit:
    Dann brauchst du auch nicht mehr zwei verschiedene Methoden zum Auslesen und zum Ändern. Am besten macht man dann aber noch eine Methode für const-Instanzen:

    short operator[](int Obj) const;
    

    MfG

    Felix



  • (totaler C++ Anfänger) schrieb:

    Ich würde gerne die Operator 2 Mal überladen. Einmal, damit er Daten ausliest und zum 2., um die Daten zu setzen.

    2 mal überladen ist keine schlechte Idee 😉

    class Obj
    {
    //...
    public:
      short& operator[]( std::size_t index ); // fuer referenz für non-const Objekte
      short  operator[]( std::size_t index ) const; // kopie für const Objekte
    };
    // Fuer Objekte als Rueckgabewerte bieten sich Referenz & Const-Referenz an.
    

    (totaler C++ Anfänger) schrieb:

    Jetzt würde ich gerne einen Operator überladen der folgende Zeile nimmt:

    var x[3] = 5
    

    jetzt würde ich gerne nen überladenen Operator haben, der sowohl die 3 als
    auch die 5 bekommt...

    Was meinst du damit? 😕



  • Phoemuex schrieb:

    Ja, du musst eine Referenz zurückliefern:
    [...]

    short operator[](int Obj) const;
    

    Nur so als Hinweis.



  • Phoemuex schrieb:

    Am besten macht man dann aber noch eine Methode für const-Instanzen:

    short operator[](int Obj) const;
    

    Nur so als Hinweis, Michael 🤡



  • thx 🙂
    Habs hingekriegt!

    was so ein kaufmännisches "Und" alles bewirken kann 😃

    Danke allen!



  • bei short is es zwar egal, aber bei komplexeren objekten bitte sowas

    const Objekt& operator[](int Obj) const;
    


  • finix schrieb:

    Phoemuex schrieb:

    Am besten macht man dann aber noch eine Methode für const-Instanzen:

    short operator[](int Obj) const;
    

    Nur so als Hinweis, Michael 🤡

    Raff ich nicht. Und schreib bitte nix in Zitate, was derjenige nicht gesagt hat!


Anmelden zum Antworten