Un membre statique peut être déclaré const, mais il doit ensuite être initialisé dans la déclaration. Considérez le cas suivant d'un tableau statique à initialiser avec le code dans les boucles:Existe-t-il un moyen de créer une valeur de classe const statique qui est initialisée avec une boucle?
class A {
private:
enum { SIZE = 360 };
static double* vertices;
public:
static void staticInit();
};
double* A::vertices = new double[SIZE];
void A::staticInit() {
double a = 0, b = 0;
for (int i = 0; i < SIZE; i++, a += .01, b += .02)
vertices[i] = sin(a) + c2 * sin(b);
}
Le code ci-dessus fonctionnerait. Mais si l'intention est de rendre les sommets constants, alors le déclarer const donnera une erreur de compilation sur la fonction staticInit.
Dans un C++ plus ancien, je déclarais le pointeur const, et le transformais en non-const juste dans cette fonction, mais aujourd'hui, les compilateurs ne le permettent pas car il est dangereux. Bien sûr, ne pas déclarer le pointeur const est encore moins dangereux.
Existe-t-il un moyen de s'en sortir?
Merci, oui encore de "vieux" réflexes C++ – Dov