Cita:
Iniciado por rimobio Esta claro que si nos declaramos una contante dentro de la clase no puede ser inicializada.
No es cierto.
Si puede ser inicializada.
Desconozco por qué insistes en decir que una constante no puede ser inicializada.
La forma de hacerlo es asi:
Código C++:
Ver originalclass C
{
const int i;
C() : i(10) // <-- antes de las llaves,
// momento correcto para inicializar constantes
{
}
};
Estas, claramente, confundiendo la inicializacion con la asignacion.
El codigo alternativo:
Código C++:
Ver originalclass C
{
const int i;
C()
{
i = 10;
}
};
No es una inicializacion. Es una asignacion, y ya sabemos que no puedes asignar constantes, pues son .... constantes.
Pero el error de compilacion daria incluso si no hubiera un const ahi.
En C++ no se puede inicializar miembros al definirlos.
Si quitamos el const, e intentamos inicializar el miembro i, como se ve abajo
el compilador tiene la obligacion de reclamar, porque no esta permitido, en el lenguaje C o C++ inicializar miembros alli junto a la definicion. El hecho que, ademas, haya sido marcada como const, solo hace mas dificil la inicializacion, pero no tiene que ver con el fondo del asunto, es decir que los
miembros no se pueden inicializar al definirlos y éste es el mensaje que aparecio al compilar y que es el origen de este thread.