资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 软件开发 >
Advertisement
文章正文

请教:关于dynamic_cast<>的一个问题。

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   

程序如下:  
  class   Base   {  
  public:  
  virtual   void   vvfunc()   {}  
  };  
   
  class   DerivedA   :   public   Base   {};  
  class   DerivedB   :   public   Base   {};  
   
  void   main()  
  {  
  DerivedB   &dB   =   *(new   DerivedB);  
  Base   &B=dB;  
   
  try  
  {  
  DerivedA   p=dynamic_cast<DerivedA   &>(B);  
  cout<<"Success"<<endl;  
  }  
  catch   (std::bad_cast&)   //??为什么不能跳到此处??????  
  {  
  cout<<"cast   error"<<endl;  
  }  
  catch   (...)  
  {  
  cout<<"error"<<endl;  
  }  
   
  }  
  上段程序为什么不是输出“cast   error”。(VC6.0,RTTI)  
 

网友回答:

发表者:renheihei

mark

发表者:UPCC

先up

发表者:hffaming

g++编译输出是:  
   
  cast   error

发表者:xuzheng318

up   了

发表者:daylove

你把  
  catch   (...)  
  {  
  cout<<"error"<<endl;  
  }  
   
  干掉看看如何?

发表者:willko

我觉得不关这个事

发表者:xrdsheng

用了catch(...)前面就不能再有catch(DataType),不然是语法错误,编译器会报错的,BCB是这样的,其它编译器应该也是

发表者:xzgyb

如果是vc,这样写吧  
  同时把工程的产生rtti信息项选中  
  #include   <stdio.h>  
  #include   <typeinfo.h>  
   
  class   Base   {  
  public:  
  virtual   void   vvfunc()   {}  
  };  
   
  class   DerivedA   :   public   Base   {};  
  class   DerivedB   :   public   Base   {};  
   
  void   main()  
  {  
          DerivedB   &dB   =   *(new   DerivedB);  
          Base   &B=dB;  
           
          try  
          {  
                  DerivedA   p=dynamic_cast<DerivedA   &>(B);  
                  printf("success\n");  
          }  
          catch   (bad_cast&)   //??为什么不能跳到此处??????  
          {  
                  printf("cast   error\n");  
          }  
          catch   (...)  
          {  
                  printf("error\n");  
          }  
           
  }  
 


 

 
热门推荐笔记本: 清华同方笔记本
相关文章:
笔记本相关:
IT技术文章:
webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
©2007 popbb.net All Rights Reserved