Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Przeciążenie operatora () w celu nadania wartości

Ostatnio zmodyfikowano 2016-03-30 13:01
Autor Wiadomość
Blonnik
Temat założony przez niniejszego użytkownika
Przeciążenie operatora () w celu nadania wartości
» 2016-03-29 11:54:25
Cześć.
Mam klasę macierz i chciałbym przeciążyć operator () tak, żeby zwracał wartość komórki (x,y) i tak, żeby można jej było nadać wartość.
Np:

C/C++
x = mat( 5, 6 ); // zwraca wartość, którą sobie wpiszę do x

mat( 3, 4 ) = 8; //nada wartość

Zwracanie wartości nie jest dla mnie problemem, robię to tak:

C/C++
int Matrix::operator ()( int x, int y )
{
    return tab[ M * y + x - 1 ]; // macierz przechowuję w tablicy jednowymiarowej (wiem, że głupie ale takie wymagania zadania)
}

Ale jak zrobić to przypisanie ?
P-146705
carlosmay
» 2016-03-29 12:04:03
Mam klasę macierz i chciałbym przeciążyć operator ()
Dostęp do elementów macierzy daje operator [], więc ten operator należy przeciążyć.

Przeciążanie operatorów

operator ()
Używamy głównie jako operator wywołania, np. predykatu.
P-146706
oputyk
» 2016-03-29 12:06:34
A spróbuj zwrócić referencję:
C/C++
& int Matrix::operator ()( int x, int y )
{
    return tab[ M * y + x - 1 ]; // macierz przechowuję w tablicy jednowymiarowej (wiem, że głupie ale takie wymagania zadania)
}
P-146707
mateczek
» 2016-03-30 13:01:04
http://cpp0x.pl/forum/temat/?id=22546&p=2
3 ostatnie posty

wiem, że głupie ale takie wymagania zadania

wcale nie głupie !!! Spróbuj prosto zadeklarować dynamicznie pamięć dla macierzy 2d. Moim zdaniem takie rozwiązanie z tablicą pojedyńczą jest jak najbardziej ok.
P-146769
« 1 »
  Strona 1 z 1