Witam
Mam klasę Zamień, w niej element char wyr[50]. W klasie różne inne funkcje, ale jedna główna, zamieniająca wpisane wyrażenie na ONP -
Zamiana Zamiana::zamien(Zamiana wej)
Jak widać funkcja zwraca za argument przyjmuje podany element klasy, zwraca kolejny. Z tym, że ten podawany jest w formie np. 2 + 2 natomiast zwracany 2 2 +. W funkcji wprowadzam sobie m. in. dwie zmienne:
char *i,*p;
i = wej.wyr;
p=this->wyr;
]
Potem mam tutaj pętlę
while(*i)
a w niej np.
if( isdigit(*i) )
{
while (isdigit(*i)) /* jezeli liczba na wyjscie */
{
*p=*i;
i++;
p++;
}
*p=' ';
p++;
}
to tylko tak, żeby zaprezentować jak kod działa.
I ogólnie wszystko jest dobrze robione, na końcu dostaję dobrą wartość, ale...
Zwrócić muszę *this, a jak to zwracam to dostaję tylko pierwszy znak całego wyrażenia. Za to jak wpiszę pod koniec funkcji
cout<<"this"<<this->wyr;
To wypisuje elegancko całe wyrażenie w ONP. Tak jak wyżej pisałem jak podam 2+2 to przy tym z cout wypisze mi this 2 2 +. Ale jak na końcu dam
return *this
to zwróci tylko 2...
Jak zmusić tą funkcję, by zwracała całe wyrażenie a nie tylko pierwszy znak?[/kod]