Я хотел бы знать в приведенном ниже сценарии, какая практика будет правильной / идеальной, и если у меня есть какие-то другие варианты.
Предположим, у меня есть класс, унаследованный от другого класса.
class A { };
class B : public A { };
class C : public A { };
Я веду карту указателей A (базовый класс).На самом деле это либо производный класс B, либо класс C.
Теперь, скажем, я хотел бы выполнить операцию x с одним из указателей производного класса на карте.Я вижу, что есть два способа сделать это.
1] Введите базовый класс в класс dervied и выполните операцию над ним.Это хорошая практика?
2] Имейте виртуальную функцию, доступную в базовом классе, чтобы вы могли выполнять операцию без приведения типов.Я чувствую, что проблема в том, что некоторые методы действительно могут принадлежать производному классу, а не базовому классу.Я имею в виду, что один метод, применимый к производному классу B, может быть неприменим к производному классу C. Мне неудобно иметь чисто виртуальную функцию на A. Имею ли чисто виртуальную функцию, это хорошая практика?В качестве альтернативы, что можно сделать?