Ładny brzuch

Czesc,
Mam taki maly problem.
Pisze sobie klase macierzy, ktora wyglada tak:
class myMatrix { //konstruktory myMatrix(); myMatrix(int,int); //destruktor ~myMatrix(); //operatorty int *operator[](int); myMatrix &operator=(const myMatrix&); bool operator==(const myMatrix &); friend ostream &operator<<(ostream &,const myMatrix&); friend istream &operator>>(istream &,myMatrix &); //funkcje arytmetyczne }
Chcialbym przeciazyc operator dodawania dla 2ch macierzy, jednak jezeli zrobie go tak:
myMatrix &operator+(const myMatrix& m)
{
jakies warunki sprawdzajace czy mozna wkonac dzialanie na macierzach
for...
for...
this->mtx[i][j]+=m.mtx[i][j];
return (*this);
}

Wtedy co jest raczej oczywiste jezeli wywolam np. a+b, to do macierzy a zapisza mi sie wyniki i zostanie zmodyfikowana, nie moge zwrocic macierzy tymczasowej tj np utworzyc sobie myMatrix tmp w tym operatorze i ja zwrocic, bo bedzie to zmienna lokalna, nie mozna tez zrobic tego dla dwoch parametrow, bo operator dodawania musi miec 1, z koleji jak zrobie go jako funkcje zaprzyjazniona, czego nie powinno sie robic, to wtedy trace wskaznik this, i tez nie moge zwrocic obiektu tmp, czy jedyny sposob to zrobienie konstruktora, ktory jako parametry bedzie mial np macierz nxm i w return myMatrix(asd), gdzie asd jest int **?




nie moge zwrocic macierzy tymczasowej tj np utworzyc sobie myMatrix tmp w tym operatorze i ja zwrocic, bo bedzie to zmienna lokalna,
moesz na stercie utworzyc obiekt i zwrcic do nie go referencje

nie mozna tez zrobic tego dla dwoch parametrow, bo operator dodawania musi miec 1, z koleji jak zrobie go jako funkcje zaprzyjazniona, czego nie powinno sie robic, to wtedy trace wskaznik this,
po co ci wskaznik this? nie nalezy modyfikowac operandow w tym wypadku.

Rzeczywiscie ;) Dzieki ;]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •