Одним из способов сохранения этого приоритета является просто protected int prio
в A
.
. Это не сработает.
Если вы используете
static int prio;
У вас будет только одна переменная для A
и всех ее подклассов.
Если вы используете
int prio;
, каждый экземпляр будет иметь этокак переменная-член, побеждающая цель создания значения для каждого класса.
Вы можете использовать следующую стратегию для минимизации стандартного кода.
class A { ... };
template <typename T>
struct PriorityHolder
{
static int prio;
};
template <typename T>
int PriorityHolder<T>::prio = <Find a suitable method for value>;
class Derived1 : public A,
public PriorityHolder<Derived1>
{
...
};