¿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!

Respuestas a la pregunta(1)

Su respuesta a la pregunta