Witam, część zadania brzmi:
Postfiksowy operator ++ (jako składowa klasy). (Uwaga: operator ten dla odróżnienia od wersji prefiksowej, przyjmuje „dodatkowo” tak zwany dowolny parametr int.) Działanie tego operatora powinno być podobne do operatora ++ wykonywanego na zmiennych typu int, czyli: operator powinien zwracać wartość obiektu sprzed modyfikacji. Operator ten powinien sprawdzić czy liczba wykonanych inkrementacji nie przekroczyła wartości maksLiczbaInkr. Jeśli przekroczyła to rzucony ma być wyjątek typu CWyjatek, gdzie jako wartość aktualna parametru konstruktora tej klasy przekazany zostanie napis „Maksymalna liczba inkrementacji”. W przeciwnym wypadku obiekt jest modyfikowany w następujący sposób: i) jeśli wartość pola poziomB jest mniejsze od 10, to wartość ta zwiększana jest o 1 lub ii) jeśli wartość pola poziomB jest równa 10, wówczas wartość pola poziomB ustawiana jest na 0, a wartość pola poziomA na (poziomA+1)%10. Dodatkowo wartość pola liczbaInkr zwiększana jest o 1. Operator zwraca „wartość obiektu” sprzed modyfikacji.
Natomiast to udało mi się wyklepać
CPoziom(unsigned int,unsigned int, char);
void ustawMaksInkr(int);
CPoziom & operator ++(int dowolny){ //przeciązanie operatora ++ trzeba pamietac o "this"
CPoziom zwracana();
zwracana=this;
CWyjatek wyjatek("Maksymalna liczba inkrementacji");
if(this->liczbaInkr>this->maksLiczbaInkr)
throw wyjatek;
else if(this->poziomB<10) {
this->poziomB++;
}
else if(this->poziomB==10){
this->poziomB=0;
this->poziomA=(this->poziomA+1)%10;
}
this->liczbaInkr++;
return zwracana;
}
Problem pojawia się przy zapamiętaniu początkowej wersji obiektu czyli "zwracana=this;". Chciałem tutaj użyć konstruktora kopiującego no ale cuś nie działa :/ Pytanie brzmi jak zwrócić obiekt sprzed modyfikacji.