CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

dynamic_cast错误

楼主xtzyz()2004-12-01 22:35:07 在 C/C++ / C++ 语言 提问

#include   <iostream>  
  using   namespace   std;  
   
  class   B  
  {  
  public:  
          void   func1()  
          {  
                  cout   <<   "B::func1()"   <<   endl;  
          }  
   
          virtual   void   func2()  
          {  
                  cout   <<   "B::func2()"   <<   endl;  
          }  
  };  
   
  class   D:public   B  
  {  
  public:  
          void   func1()  
          {  
                  cout   <<   "D::func1()"   <<   endl;  
          }  
   
          void   func2()  
          {  
                  cout   <<   "D::func2()"   <<   endl;  
          }  
   
          void   func3()  
          {  
                  cout   <<   "D::func3()"   <<   endl;  
          }  
  };  
   
  int   main(int   argc,   char*   argv[])  
  {  
          B   *pb   =   new   D;  
           
          pb->func1();  
          pb->func2();  
   
          if(D*   pd   =   dynamic_cast<D*>(pb))  
                  pd->func3();  
   
          return   0;  
  }  
   
  上面程序在VC6下编译出现警告信息  
  warning   C4541:   'dynamic_cast'   used   on   polymorphic   type   'class   B'   with   /GR-;   unpredictable   behavior   may   result  
   
  运行输出  
  B::func1()  
  D::func2()  
   
  之后弹出debug   error对话框,若把dynamic_cast改为static_cast则正常,为什么? 问题点数:10、回复次数:3Top

1 楼Andy84920(你也不懂)回复于 2004-12-01 22:49:55 得分 2

dev-c++:  
   
  B::func1()  
  D::func2()  
  D::func3()  
   
  未有任何问题.Top

2 楼Andy84920(你也不懂)回复于 2004-12-01 22:52:06 得分 3

若把dynamic_cast改为static_cast则正常  
   
  //不应该这样做的,这样没有什么意义,当然你只是测试.你的程序没有数据而矣.  
  //应该是VC的问题而不是程序的问题,我没看到有什么问题.Top

3 楼lkng8(小康)回复于 2004-12-01 23:15:15 得分 5

你这个程序主要是关于RTTI的。如果使程序可以运行的话,你必须在visual   c++里面的:project->setting里面有个   c++   框,你在   category   里面选择   c++   language,最后把   RTTI   框选上就可以运行了。Top

相关问题

  • dynamic_cast
  • static_cast and dynamic_cast?
  • 关于dynamic_cast
  • 关于dynamic_cast?
  • dynamic_cast异常!!
  • dynamic_cast问题
  • set @a=cast(5*@Pages varchar)--varchar附近有语法错误,是什么错误啊
  • 错误
  • ','错误
  • 错误???

关键词

  • c++
  • cast
  • func
  • dynamic
  • 程序
  • 问题

得分解答快速导航

  • 帖主:xtzyz
  • Andy84920
  • Andy84920
  • lkng8

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo