È possibile creare private a
e b
e fornire ai getter l'accesso ai propri valori dall'esterno della classe.
class MyClass
{
private:
int a, b; // private
public:
int getA() { return a; }
int getB() { return b; }
MyClass()
{
int relatedVariable = rand() % 250;
a = relatedVariable % 100;
b = abs(relatedVariable - 150);
}
};
Oppure, si potrebbe utilizzare inizializzatori subobject e memorizzare nella cache il numero casuale in qualche modo. Attivare l'ottimizzazione potrebbe anche rimuovere la variabile temporanea nel testo del programma generato.
class MyClass
{
private:
int temp; // this is a workaround
public:
const int a;
const int b;
MyClass() : temp(rand() % 250), a(temp % 100), b(abs(temp - 150)) {}
};
Remember that subobject construction happens in the order that members are declared in the class, and that the order of subobjects in the initialization list is ignored.
In alternativa, si può essere pigri, e solo memorizzare il numero iniziale casuale, e generare a, b
su richiesta.
L'espressione per 'relatedVariable' può essere resa esterna alla classe? In modo che tu possa passarlo come parametro nel costruttore. – ulidtko
Cerca negli elenchi di inizializzazione in C++ – tcannon91