河北唐山滦县跆拳道:关于C++强制转型的问题!!急!

来源:百度文库 编辑:高考问答 时间:2024/05/06 01:33:39
#include <iostream>

using namespace std;

class Base
{
public:
virtual void func1(){};
};

class Derived:public Base
{
};

int main()
{
Base *bp,b_ob;
Derived *dp,d_ob;
bp=&d_ob;
dp=dynamic_cast<Derived *>(bp);
if(dp)
{
cout<<"Cast Ok"<<endl;
}
return 0;
}

此程序调试有问题。为什么向下强制转型会出现问题呢?这是一本国外C++教程《C++:A Beginner's Guide》中的438页上的一个例子,但是错的!

程序本身是没有任何错误的,dynamic_cast用的非常合理.
不知道LZ是否是使用VC来做平台,如果是的,那么请打开Project->settings->c/c++->category->c++ language,将Enable Run-Time Type Infomation(RTTI)选中,或者直接使用/GR编译选项.
因为VC默认不启动RTTI,即“运行时期类型识别”,如果在你的程序用到了RTTI,比如typeid,你必须明确告诉编译器启动RTTI,这样VC才能正确编译!

希望对LZ有帮助呵呵.RTTI,真是让人既爱又恨的名字~~

头文件输入错了吧!