Kopiowanie tablicy dwuwymiarowej do obiektu

0
#include <iostream>
using namespace std;

class macierz {
    int tab[2][2];
    public:
        void wypelnij(int tabx[2][2]) {
            tab = tabx;
        }
        void wyswietl() {
            for (int i = 0; i < 2; ++i) {
                for (int j = 0; j < 2; ++j) {
                    cout << tab[i][j] << ' ';   
                }
            cout << endl;
        }
};

int main() {
    int tab[2][2] = {{1, 2}, {3, 4}};
    macierz a;
    a.wypelnij(tab);
    a.wyswietl();
    return 0;
}

Witam

Przy kompilacji wywali mi błąd w linijce tab = tabx. Znalazłem wiele tematów o tym że nie można tak tego zrobić. Lecz większość dotyczyła innych przypadków lub rozwiązanie problemu było zbyt skomplikowane.

Mógłby ktoś mi wytłumaczyć jak w możliwie najprostszy sposób przekazać taką tablicę dwuwymiarową do obiektu?

0
#include <iostream>
using namespace std;

class macierz {
    int tab[2][2];
    public:
        void wypelnij(int (&tabx)[2][2]) {
            for (int i = 0; i < 2; ++i) {
                for (int j = 0; j < 2; ++j) {
                    tab[i][j] = tabx[i][j];
                }
            }
        }
        void wyswietl() {
            for (int i = 0; i < 2; ++i) {
                for (int j = 0; j < 2; ++j) {
                    cout << tab[i][j] << ' ';   
                }
            cout << endl;
            }
        }
        int ** operator +(macierz & m1, macierz & m2) const {
            int tab[2][2];
            for (int i = 0, i < 2; ++i) {
                for (int j = 0; j < 2; ++j) {
                    tab[i][j] = m1.tab[i][j] + m2.tab[i][j];
                }
            }
            return tab;
        }
};

int main() {
    int tab[2][2] = {{1, 2},{3, 4}};
    macierz a, c;
    a.wypelnij(tab);
    macierz b(a);
    a.wyswietl();
    cout << endl;
    b.wyswietl();
    cout << endl;
    c.wypelnij(a+b);
    c.wyswietl();
    return 0;
}

Okej. Teraz nie mogę sobie poradzić z dodawaniem macierzy. Kompilator wywala błąd przy deklaracji na operatorze.
[Error] 'int** macierz::operator+(macierz&, macierz&) const' must take either zero or one argument

0

Jeżeli operator+ jest przeciążany w klasie, to potrzebuje tylko jednego argumentu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0