C++编程问题:关于派生类

主要是我的私有成员派生类调用不了,细节问题我在下面的程序里面备注了,谁知道怎么回事儿?求高手解决,谢谢了#include<iostream>usingnamespaces... 主要是我的私有成员派生类调用不了,细节问题我在下面的程序里面备注了,谁知道怎么回事儿?求高手解决,谢谢了

#include<iostream>
using namespace std;
class time
{
private:
int hour,minute;//我的派生类不能调用私有函数,但是书上是这样写的啊?
static int n;
public:

time(int h,int m)
{
hour=h;
minute=m;
cout<<hour<<':'<<minute<<endl;
//sencond=s;
}
~time()
{
n++;
cout<<n<<"n"<<endl;
}
};
int time::n=0;

class settime:public time
{
private:
int sencond;
static int n1;
public:
settime(int h,int m, int s):time(h,m)
{
sencond=s;
cout<<hour<<':'<<minute<<':'<<sencond<<endl;
}
~settime()
{
n1++;
cout<<n1<<"m"<<endl;
}
};
int settime::n1=0;
int main()
{
settime t(5,6,7);
time t1(1 ,1);//为啥这样定义是错误呢?不能运行但是
time::time(1,1);//这样可以,但是书上不是这样写的啊
settime t2(8,8,8);
return 0;
}
展开
 我来答
匿名用户
2012-03-30
展开全部
派生类不能直接访问基类 private 部分,只能通过基类的 protected 或 public 的成员函数访问基类的 private 部分。

派生类的构造函数写错,应改成:
settime(int h, int m, int s) : time(h, m)
{
sencond = s;
cout << ':' << sencond << endl;
}

至于你在 main() 函数说的错误,在 Code::Block 和 VS 11 上分别测试没有出现错误。

另外,这个程序不符合 is - a 模型,不适合使用公有继承。
追问
嗯嗯,谢谢了!我是用的cfree,在那上面不可以。刚学c没多久,我的win7系统不能用vc++6.0,vs 11是什么?
追答
VS 11 是 Visual Studio 11,微软最新的 IDE,目前还是测试版。

我没用过 cfree ,不了解。

我又在 Visual Studio 2010 上测试,还是没有出现你在 main() 里说的错误。
菜刀撒
2012-04-01 · TA获得超过313个赞
知道小有建树答主
回答量:487
采纳率:0%
帮助的人:276万
展开全部
time t1(1 ,1);//为啥这样定义是错误呢?不能运行但是
time::time(1,1);//这样可以,但是书上不是这样写的啊
------------------------------------------------------------------
不能够啊,你main函数的头文件里 有没有包含这个类呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tceh528
2012-04-03 · 超过16用户采纳过TA的回答
知道答主
回答量:63
采纳率:0%
帮助的人:44.5万
展开全部
还不错嘛
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式