Бих искал да имам базов клас, който има постоянно поле (като уникален идентификатор, свързан с класа, който не може да бъде модифициран след време на компилиране). Досега декларацията static const
ще бъде добре. Сега бих искал да наследя този базов клас и да се уверя, че децата на този клас имат същото поле, но със свои собствени стойности. Как мога да направя това?
Да кажем, че бих искал да имам базов клас, наречен Base
с поле ID
, което съдържа int
стойност от 0. След това бих искал да имам класовете A
, B
и C
, като всички те са публични деца на Base
и бих искал да се уверя, че тези деца също ще имат полетата ID
със съответните стойности 1, 2 и 3 (под „уверяване“ имам предвид нещо като получаване на грешка на компилатора, ако нямат идентификатор изрично декларирано).
Ако успея да изградя този сценарий, моите очаквания биха били, че като поискам полето ID
на указател Base*
, трябва да получа различни стойности в зависимост от това дали указателят е създаден като new A()
, new B()
или new C()
.
Моето предположение би било да декларирам ID
като virtual static const
, което разбира се няма смисъл и дава грешка на компилатора.
Но тогава какво мога да направя, за да постигна описания резултат? (Единственото нещо, което мога да си представя, е да декларирам ID
като виртуална функция, връщаща цяло число и след това да кодирам твърдо стойността в тялото на функцията, но търся нещо по-елегантно.)
Благодаря ви предварително!