Zmiana chara w tablicy - czy taka operacja jest możliwa?

0

Witam, pewne pytanie. Dostałem taki fragment kodu :

char * wsk = cpmptr1->operator()(0, 0);
wsk[0] = 'a';

Przeładowanie operatora wygląda tak :

char * & operator()(int a, int b);

I teraz pytanie czy ta operacja wsk[0] = 'a' jest w ogóle możliwa? Probowałem wszystkiego i za każdym razem przy tym przypisaniu wersz polecień przestaje odpowiadać.
PS : cpmptr1 jest 2-wymiarową tablica wyrazów (char*).

0

Zależy co zwraca operator() i czy gwarantuje możliwość zmian. Ogólnie nie jest to zalecane, jeśli nie jest potwierdzone, że jest to bezpieczne w dokumentacji klasy.

0

operator() powinien w tym przypadku zwracać const char*. Ktoś nie dopilnował const-correctness.

0

Generalnie to wygląda mniej wiecej tak

template <class T>
class aMatrix{
private:
    T ** matrix;
    int n;
    int m;
}
aMatrix<char * >mtx;
mtx.setitems(2,1,"dom", "szkola");

// w tym miejscu inicjalizuje mi tablice tymi słowami

i funkcja operator() wygląda tak :

template <class T>
const T & aMatrix<T>::operator()(int a, int b)
{
	if ( (a > n) || (a < 0) || (b > m) || (b < 0)) throw aException(0, "Index out of range", __FILE__, __LINE__);
	else return matrix[a][b];
}

I gdy próbuję zmodyfikować to co wyrzej automatycznie zacina mi sie konsola.

0

To nie powinno ci się skompilować.... masz przecież const!!!! Tak więc jakakolwiek modyfikacja jest niedopuszczalna!

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