É possível declarar um valor constante estático virtual em uma classe C ++?

Eu gostaria de ter uma classe base que tenha um campo constante (como um ID exclusivo associado à classe que não pode ser modificado após o tempo de compilação). Até agora ostatic const declaração seria muito bem. Agora, gostaria de herdar essa classe base e garantir que os filhos dessa classe tenham o mesmo campo, mas com seus próprios valores. Como posso fazer isso?

Digamos que eu gostaria de ter uma classe base chamadaBase com umID campo que detém oint valor de 0. Então, eu gostaria de ter as classesA, B eC, todos eles sendo filhos públicos deBase e eu gostaria de ter certeza de que essas crianças também teriamID campos com os respectivos valores de 1, 2 e 3 (por 'certificar-se', quero dizer algo como obter um erro do compilador se eles não tiverem um ID explicitamente declarado).

Se eu conseguisse construir esse cenário, minha expectativa seria que pedir oID campo de umBase* ponteiro, eu deveria obter valores diferentes dependendo se o ponteiro foi criado comonew A(), new B() ounew C().

Meu palpite seria declararID Comovirtual static const, o que obviamente não faz sentido e dá um erro no compilador.

Mas então o que posso fazer para alcançar o resultado descrito? (A única coisa que eu poderia imaginar seria declararID como uma função virtual retornando um inteiro e então codificando o valor no corpo da função, mas estou procurando algo mais elegante.)

Agradeço antecipadamente!

questionAnswers(1)

yourAnswerToTheQuestion