CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

类私有继承时候的构造函数的问题

楼主ican03(我想我可以)2006-07-03 10:48:23 在 C/C++ / C++ 语言 提问

class   add  
  {  
  public:  
  int   a,b;  
   
  add(int   m,int   n)  
  {  
  a=m;  
  b=n;  
  }  
  void   cal(void)  
  {  
  cout<<a<<"+"<<b<<a+b<<endl;  
  }  
  };  
   
  class   div:private   add  
  {  
  public:  
  int   a,b;  
   
  div(int   m,int   n):add(m,n)  
  {  
  a=m;  
  b=n;  
  }  
  void   cal(void)  
  {  
  cout<<a<<"/"<<b<<a/b<<endl;  
  }  
  };  
  提示是:no   appropriate   default   constructor   available  
  私有继承的时候,基类的所有函数都是私有的,应该也包括构造函数。但是基类的子类要继承基类的话应该是要调用基类的构造函数的。请问这个怎么解决呢? 问题点数:10、回复次数:6Top

1 楼UPCC(杂食动物)回复于 2006-07-03 10:56:12 得分 0

你的程序没有问题,而且  
  私有继承的时候,基类的所有函数都是私有的,应该也包括构造函数。但是基类的子类要继承基类的话应该是要调用基类的构造函数的。请问这个怎么解决呢?  
  -------------------------------  
  这句话不知道真实要表示什么?你要解决的是什么问题?因为你前面的描述是合理的Top

2 楼Jim_King_2000()回复于 2006-07-03 11:03:36 得分 0

class   div:private   add相当于  
  class   div  
  {  
  private:  
        add   m_add;  
   
        ...  
  }  
  所以div的成员函数是可以调用add的成员函数的。只不过在别的地方就不能够用div类型的对象去调用add的成员函数了。Top

3 楼ican03(我想我可以)回复于 2006-07-03 11:27:24 得分 0

但是不知道为什么会编译错误啊Top

4 楼sharpdew(风刃)回复于 2006-07-03 11:46:46 得分 5

估计是你这样调用类生成对象了:  
  div   d;  
  这样的话因为你的类中没有定义不带参数的构造函数,所以就会出现你描述的那种错误。Top

5 楼rollor_phoe(柔枫)回复于 2006-07-03 12:31:27 得分 5

你在main()函数中创建对像时,用的是div   ab;因为没有不带参数的默认构造函数,所以没有构造函数所用。  
  你在创建对象时加上参数就没有问题了。  
   
  还有我在VC6.0中调试好像div有问题吧!  
  我改成diu就行了。Top

6 楼Improving()回复于 2006-07-03 13:16:18 得分 0

sharpdew和rollor_phoe说得没错。Top

相关问题

关键词

得分解答快速导航

  • 帖主:ican03
  • sharpdew
  • rollor_phoe

相关链接

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

广告也精彩

反馈

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