Überladen von Multiplikation mit mehrdimensionalen dynamischen Arrays



  • class Simple2DimArr
    {
        private:
            int* pArr;
            int Rows, Cols;
        public:
            Simple2DimArr(int Zeilen, int Spalten)
            {
                Rows = Zeilen;
                Cols = Spalten;
                // 2-Dimensionales Array auf 1-Dimensionales abbilden
                pArr = new int[Rows * Cols];
            }
            int* operator[](int Zeile)
            {
                // Array liegt "zeilenweise" im Speicher
                return & pArr[Zeile * Cols];
            }
            ~Simple2DimArr()
            {
                delete [] pArr;
            }
    };
    
    int main()
    {
        Simple2DimArr Arr(2,3);
        Arr[0][0] = 42;
    }
    

    Guten Abend!
    Ich wollte auf Basis der oben stehenden Klasse den Multiplikations-Operator überladen. Leider komme ich zu keinem Ergebnis und brauche dringend Hilfe!!
    Das soll in etwa so aussehen:

    Simple2DimArr A(3,3);
    Simple2DimArr B(3,3);
    
    A[1][1] = 42;
    B[1][1] = 2;
    
    A[1][1]*B[1][1];
    

    Wobei der *-Operator in der Klasse Simple2DimArr überladen werden soll durch einen eigenen Multiplikations-Operator. Ich weiß, komische Aufgabe, aber mein Prof will das so haben...



  • Du musst eine Proxyklasse beim operator[] zurückgeben, die dann wiederum den operator[] implementiert.
    Ein Beispiel dazu findest du hier

    EDIT: Das hier ist auch noch ein sehr gutes Beispiel dafür!



  • Danke für die Mühe, aber ich bin jetzt über dieses Link: http://www.acims.arizona.edu/PUBLICATIONS/PDF/RajnikanthTemplates04.pdf
    zum Ergebnis gekommen!!


Anmelden zum Antworten