У меня довольно странная ситуация, когда я хотел бы иметь возможность определять определенные константы, которые может переопределять подкласс ABC.
struct A {
static const int a = 20;
virtual int func() = 0;
};
struct B : public A {
static const int a = 3;
int func() { return 5; }
};
struct C : public A {
static const int a = 4;
int func() { return 3; }
};
К сожалению, если я использую A *aPtr = new B
, aPtr->a
вернет 20 вместо 3.
Один обходной путь, который я вижу, - это однострочные функции (по линиям func
в приведенном выше примере), но синтаксис констант для этого немного более подходитособенно ситуация концептуально.Существует ли синтаксически разумный способ определения того, какие константы использовать во время выполнения, когда вызывающему коду не нужно ничего знать после первоначального создания объекта?