Правильный подход заключается в создании связанного списка указателей на объекты типа Person. Затем вы будете заполнять его указателями на экземпляры классов Ученик и Учитель. Вы должны создать его динамически (новое ключевое слово)
И теперь magi c поставляется с использованием ключевого слова virtual для объявления метода в классе Person. Проверьте это в google c ++ polymorphism и C ++ виртуальный метод Если вы в последний раз вызовете виртуальный метод для указателя на объект Person, он вызовет правильный метод из производного класса.
Не не забудьте вызвать delete
для каждого элемента в списке в конце использования (программы). И для этого вы должны определить virtual destructor
в классе Person
В вашем случае вы должны определить класс Person следующим образом:
class person
{
public:
string name;
virtual ~person() {};
public:
person(string="");
virtual void show_name();
};
Или другой подход мог бы заключаться в использовании dynamic_cast<>()
, но для это вам нужно включить в компиляторе. Это называется RTTI (информация о типе времени выполнения). С помощью Dynami c Cast вы можете безопасно кастовать персонажа ученику или учителю Если Dynami c Cast не может выполнить каст, он вернет nullptr
. Таким образом, вы можете проверить это значение.