Теперь вернусь к основному вопросу
Цитата Alexanderkrup:
В классах есть переопределенные виртуальные функции класса base. Как сделать так, что бы я мог вызывать эти функции. Например вызвать их из класса name, а не только из publication. »
|
Суть виртуальных функций и заключается в том, что при обращении к методу на любом из уровней многоуровнего класса, будет вызвана реализация самого "верхнего" класса для данного объекта.
Таким образом имена "виртуальных" методов можно спокойно использовать в любом классе, в котором этот метод уже определён (пусть даже "абстрактно").
И нет разницы, производится ли вызов из другого метода данного класса (командой
this->VM(); ) или же извне по указателю базового класса (командой
TBaseClass->VM(); ). В обоих случаях механизм виртуальных функций определит настоящий класс данного объекта и вызовет соответствующую реализацию для данного уровня.
P.S.
Для того, чтобы вызвать конкретную реализацию виртуальной функции из базового класса (например, чтобы выполнить все реализации по цепочке), нужно написать команду так
TBaseClass:VM();