dynamic_cast的错误。求教高手啊,小弟就剩10分了。。救救小弟

a043028448 2009-09-26 07:15:26
#include<iostream>
using namespace std;
class Widget{
virtual void out(){cout<<"Widget"<<endl;}
};
class SpecialWidget:public Widget{
virtual void out(){cout<<"SpecialWidget"<<endl;}
};
void main(){
Widget *pw;
dynamic_cast<SpecialWidget*>(pw);
}
运行时报错:abnormal program termination

...全文
80 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
晨星 2009-09-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 a043028448 的回复:]
问题解决了。在VC里能添加/GR 才能实现RTTI
[/Quote]
只有老的VC6默认关闭RTTI功能。
VC自从2003版以后RTTI默认都是打开的,毕竟这是C++语言的标准特性。
a043028448 2009-09-26
  • 打赏
  • 举报
回复
问题解决了。在VC里能添加/GR 才能实现RTTI
a043028448 2009-09-26
  • 打赏
  • 举报
回复
VC6啊。。。该怎么处理
csust_huhai 2009-09-26
  • 打赏
  • 举报
回复
我在DEV中可以运行,没有错误。但在VC6.0k中不行,不知道为什么,上面的好像没有错
thy38 2009-09-26
  • 打赏
  • 举报
回复
我用mingw直接运行,没有错误。怀疑LZ用VC6了。
晨星 2009-09-26
  • 打赏
  • 举报
回复
啥错啊?
你是不是用VC6,而且没打开RTTI选项?
a043028448 2009-09-26
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;
class Widget{
virtual void out(){cout<<"Widget"<<endl;}
};
class SpecialWidget:public Widget{
virtual void out(){cout<<"SpecialWidget"<<endl;}
};
void main(){
Widget *pw = new SpecialWidget;////////////改了 ,还是出错啊? 楼上的大侠
dynamic_cast<SpecialWidget*>(pw);
}
晨星 2009-09-26
  • 打赏
  • 举报
回复
dynamic_cast会导致对对象运行时信息的访问,而不仅仅是取一个指针值那么简单。
你直接给一个野指针进行dynamic_cast,不出问题才怪。
晨星 2009-09-26
  • 打赏
  • 举报
回复
Widget *pw = new SpecialWidget;

64,647

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧