在vc6.0下默认不支持使用动态运行时(RTTI),所以在编译程序前应对工程进行设置:
方法如下:
工程→设置→C++→(勾选)允许运行时信息RTTI
dynamic_cast 如果转换失败,将返回一个NULL指针
实例:
其中 如果不对工程设置,下面这一句将抛出异常
B* pbb=dynamic_cast<B*>(paa);
不过设置后,动态转换也不成功,查些资料后发现确实不可以。
倒可以用
B* pbb=reinterpret_cast<B*>(paa);
进行转换,转换后 打印转换成功。
参考: