使用dynamic_cast就必须在编译器中启动RTTI,即“运行时期类型识别”。默认情况下编译器是不启动RTTI的。凡是程序中用到了RTTI(比如typeid)都要在编译器中打开RTTI,这样才能正确编译。
VC6下启动RTTI:
Project->settings->c/c++->category->c++ language,将Enable Run-Time Type Infomation(RTTI)选中,或者直接使用/GR编译选项.
VS.net2003下启动RTTI:
项目->项目属性->C/C++->语言,将“启用运行时类型信息” 选择为“是”。