RE:Constante adentro de una clase
No se puede inicializar variables miembro en la declaración de la clase, así que en principio no se podrían tener const, porque no habría donde incializarlas:
class MiClase {
const int val = 0; // No se puede
MiClase() { val = 0; } // Tampoco, pues es una constante, y no se
// pueden hacer asignaciones a ella.
}
Para eso añadieron la posibilidad de declarar "inicializadores" en el constructor, para inicializar variables miembro fuera del código del constructor. Para lo que tú quieres:
class MiClase {
MiClase();
const int val;
}
MiClase::MiClase() : val(0) {
// Código del constructor
}
Después de la declaración del constructor, van unos ':', y luego el nombre de la variable a inicializar, y entre paréntesis el valor:
MiClase:MiClase() : var1(valor1), var2(valor2), ... , varN(valorN) {
}
Espero que te sirva!