У меня есть частично абстрактный класс и несколько его дочерних (пусть они называются A, A1, A2,.. соответственно).
В одном методе A мне нужно определять "id" класса, из которого он вызывается. Если вызывается из экземпляра A1, то это значение равно 1, для A2 и т.д. для A это значение определять не обязательно (ну или оно просто 0).
Для этого я нашла два варианта решения:
1:
//A:
friend virtual int getType() = 0;
//A1:
int getType() {
return 1;
}
Но это выглядит не очень.
2:
template<int D>
class A {
...
};
class A1 : public A<1>{
...
};
но из-за temlate способ не вызывает доверия (т.к. про них узнала буквально пару дней назад).
Какой из этих способов использовать лучше (и почему именно его)? Или лучше придумать что-то другое?