[][] Operator anlegen



  • Wie das Topic schon sagt: wie kann man den [][] Operator für ein Objekt anlegen?
    Wie man den einfachen macht weis ich, bräuchte aber den zweifachen, da ich mein Objekt wie eine Matrix handhaben möchte.

    Über Hilfe wäre ich sehr dankbar.

    MfG Pellaeon


  • Mod

    dein einfacher operator [] muss etwas zurückgeben, das seinerseits [] implementiert, also einen pointer oder ein proxy

    struct Matrix
    {
        int m[4][4];
    
        int* operator[](int i) { return m[i]; }
    };
    
    struct Matrix
    {
        int m[4][4];
    
        struct RowProxy
        {
            int* const row_;
            RowProxy(int* row) : row_(row) { }
            int& operator[](int i) { return row_[i]; }
        }
        RowProxy operator[](int i) { return RowProxy( m + i ); }
    };
    


  • thx für die schnelle Antwort.
    Jetzt muss ich mir noch reinbasteln, dass der Zugriff lesend und schreibend geht, aber da weis ich wie das geht, ist ja sogar ähnlich.


Anmelden zum Antworten