¿Es posible declarar una constante virtual estática en una clase de C ++?
Me gustaría tener una clase base que tenga un campo constante (como un ID único asociado con la clase que no pueda modificarse después del tiempo de compilación). Hasta ahora elstatic const
la declaración estaría bien Ahora, me gustaría heredar esta clase base y asegurarme de que los niños de esta clase tengan el mismo campo, pero con sus propios valores. ¿Cómo puedo hacer esto?
Digamos, me gustaría tener una clase base llamadaBase
con unID
campo que contiene elint
Valor de 0. Entonces, me gustaría tener las clases.A
, B
yC
, todos ellos públicos hijos deBase
y me gustaría asegurarme de que estos niños también tengan laID
campos con los valores respectivos de 1, 2 y 3 (al "asegurarse", me refiero a algo como obtener un error del compilador si no tienen una ID explícitamente declarada).
Si pudiera lograr construir este escenario, mi expectativa sería que preguntando por elID
campo de unBase*
puntero, debería obtener diferentes valores dependiendo de si el puntero se creó comonew A()
, new B()
onew C()
.
Mi conjetura sería declararID
comovirtual static const
, que por supuesto no tiene sentido y da un error de compilación.
Pero entonces, ¿qué puedo hacer para lograr el resultado descrito? (Lo único que podría imaginar sería declararID
como una función virtual que devuelve un entero y luego codifica el valor en el cuerpo de la función, pero estoy buscando algo más elegante.)
¡Gracias de antemano!