Stimpy* s – dynamic_cast
Автор admin
Воскресенье, 14 июня 2009 11:32
Stimpy* s – dynamic_cast(v); // Ошибка: III cout « typeid(*v).name() « endl. } ///:- Синтаксис void* фактически означает «информация о типе отсутствует»1. RTTI и шаблоны RTTI нормально работает с шаблонами классов, поскольку они просто генерируют новые классы. В частности, RTTI позволяет легко определить имя текущего класса. Следующая программа выводит сообщения о вызове конструкторов и деструкторов: //: C08:Constructor0rder.cpp // Порядок вызовов конструкторов #include #i nclude using namespace std: tempiate class Announce { public: AnnounceO { cout « typeid(*this).nameО « ” constructor” « endl: } -AnnounceO { cout « typeid(*this).name() « ” destructor” « endl; } }: class X : public AnnounceO { Announce ml: Announce<2> m2: public: X() { cout « “X::XO” « endl: } ~X() { cout « “X::-X()” « endl; } }: int mainO { X x; } III:- 434 Глава 8 • RTTI В данном случае шаблон параметризуется по константам int, но подошли бы и типовые аргументы. Внутри конструктора и деструктора мы средствами RTTI определяем имя класса для вывода. В классе X используется наследование и
Теги: net
Комментарии закрыты.
Автор admin Воскресенье, 14 июня 2009 11:32
Stimpy* s – dynamic_cast
Комментарии закрыты.
Последние комментарии