Уточнение типа дочернего класса C++?

У меня есть частично абстрактный класс и несколько его дочерних (пусть они называются 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 способ не вызывает доверия (т.к. про них узнала буквально пару дней назад).
Какой из этих способов использовать лучше (и почему именно его)? Или лучше придумать что-то другое?
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
YuriyVorobyov1333
@YuriyVorobyov1333
Software Developer (Node.js/Angular)
Шаблоны это вполне применяемая вещь, которая нужна в языке и помогает решать ряд задач, никаких проблем в использовании - нет
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы