Ho un metodo (in C ++) che genera un valore basato su un parametro e i parametri delle chiamate precedenti. Chiamarlo più volte con lo stesso parametro può generare valori diversi ogni volta. Ad esempio:
public:
int getValue(const int param)
{
int value = param ^ previousParam;
previousParam = param;
return value;
}
private:
int previousParam;
Ha senso permettere che questo metodo sia chiamato su const
oggetti? previousParam
parte dello stato interno dell'oggetto o "perdita" poiché lo stato interno influenza il comportamento esterno dell'oggetto?
Penso a questo metodo come un generatore che crea solo una serie di valori nelle chiamate successive, piuttosto che un metodo che modifica l'oggetto. Il chiamante non dovrebbe dipendere da un particolare parametro che genera un valore specifico. Sarebbe sensato cambiare le dichiarazioni al seguente?
int getValue(const int param) const;
mutable int previousParam;