当前位置:首页 » 多媒体相关

关于多重继承


#include"iostream.h"  
   
  class   bed  
  {  
  public:  
  bed():weight(0){}  
  void   sleep()  
  {  
  cout<<"sleep\n";  
  }  
  void   setweight(int   i)  
  {  
  weight=i;  
  }  
  protected:  
  int   weight;  
  };  
  class   sofa  
  {  
  public:  
  sofa():weight(0){}  
  void   watchtv()  
  {  
  cout<<"watch   tv\n";  
  }  
  void   setweight(int   i){weight=i;}  
  protected:  
  int   weight;  
  };  
  class   sleepersofa:public   bed,public   sofa  
  {  
  public:  
  sleepersofa(){}  
  void   foldout()  
  {  
  cout<<"fold   out\n";  
  }  
  };  
   
  int   main()  
  {  
  sleepersofa   ss;  
  ss.sofa.setweight(20);  
  return   0;  
  }  
   
  error   c2274:   function-style   cast   :   illegal   as   right   side   of   .   operator  
   
  error   c2228:   left   of   .setweight   must   have   class/struct/union   type  
  error   executing   cl.exe.  
   
  多重继承.obj   -   2   error(s),   0   warning(s)  
   
  //我用的是vc   6.0  
  //错在哪里    
 

推荐阅读

  • 魅族全面升级 M6se M3se多功能曝光魅族 meizu miniplayer 4G闪存MP3 [详细内容]
  • 诺基亚3108节约内存的技巧 [详细内容]
  • 关于大家关心的待机问题 [详细内容]
  • 不过299元10款廉价高性价比MP3选购纽曼 精音王N08 512M选购指南 [详细内容]
  • 《罗马:全面战争》操作技巧 [详细内容]
  • 现买现卖:老菜鸟与新菜鸟略话小I的蓝牙使用 [详细内容]
  • 项上致命心动 海尔MAF-N30仅299元行情速递 [详细内容]
  • 网友回答:
    网友:seaquester

    ss.sofa.setweight(20);  
      错误!

    网友:sevecol

    应该这样调用函数  
      ss.sofa::setweight(20);  
      明确地告诉编译器调用哪个父类的函数,不然编译器不知道调用哪个。

    网友:skywater

    这一句ss.sofa.setweight(20);改为ss.sofa::setweight(20);  
      sleepersofa继承了sofa之后,因为有了同名的setweight,所以出现二义性。用ss.setweight(20)表示要调用sleepersofa的实现,用ss.sofa::setweight(20)表示要用sofa的实现。

    .

    讨论区

    Login