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