consideri una classe come questa:Complesso di inizializzazione dei campi const
class MyReferenceClass
{
public:
MyReferenceClass();
const double ImportantConstant1;
const double ImportantConstant2;
const double ImportantConstant3;
private:
void ComputeImportantConstants(double *out_const1, double *out_const2, double *out_const3);
}
C'è una routine (ComputeImportantConstants) che calcola tre costanti in fase di esecuzione. Supponiamo che il calcolo sia abbastanza complesso e produce intrinsecamente tutti e tre i valori contemporaneamente. Inoltre, i risultati dipendono dalla configurazione della build, quindi i risultati non sono un'opzione.
Esiste un modo ragionevole per archiviare questi valori calcolati nei corrispondenti campi const della classe?
In caso contrario, puoi suggerire un modo più naturale per dichiarare una classe del genere in C++?
In C# vorrei utilizzare una classe statica con un costruttore statico qui, ma questa non è un'opzione in C++. Ho anche considerato di rendere ImportantConstant1..3 campi non-const o chiamate di funzione, ma entrambi sembrano inferiori.
L'unico modo per inizializzare i campi const che ho trovato è use initializer lists, ma non sembra possibile passare i risultati di un calcolo a più uscite in tale elenco.
Se è possibile, puoi dire come viene implementato 'ComputeImportantConstants'? È piuttosto lungo? Come interagiscono le tre costanti, quali altri fattori sono coinvolti? –