Considere una clase como ésta:complejos de inicialización de campos 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);
}
hay una rutina (ComputeImportantConstants) que calcula tres constantes en tiempo de ejecución. Supongamos que el cálculo es bastante complejo e inherentemente produce los tres valores a la vez. Además, los resultados dependen de la configuración de compilación, por lo que codificar los resultados no es una opción.
¿Existe una forma sensata de almacenar estos valores calculados en los campos dobles const correspondientes de la clase?
Si no, ¿puede sugerir una forma más natural de declarar dicha clase en C++?
En C# Usaría una clase estática con un constructor estático aquí, pero esa no es una opción en C++. También consideré hacer de ImportantConstant1..3 campos no const o llamadas a funciones, pero ambos parecen inferiores.
La única forma de inicializar los campos const que encontré es en use initializer lists, pero no parece posible pasar los resultados de un cálculo de salida múltiple en dicha lista.
Si es posible, ¿puede decir cómo se implementa 'ComputeImportantConstants'? ¿Es bastante largo? ¿Cómo interactúan las tres constantes? ¿Qué otros factores están involucrados? –