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;
} 展开
#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;
} 展开
3个回答
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 模型,不适合使用公有继承。
派生类的构造函数写错,应改成:
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() 里说的错误。
展开全部
time t1(1 ,1);//为啥这样定义是错误呢?不能运行但是
time::time(1,1);//这样可以,但是书上不是这样写的啊
------------------------------------------------------------------
不能够啊,你main函数的头文件里 有没有包含这个类呢?
time::time(1,1);//这样可以,但是书上不是这样写的啊
------------------------------------------------------------------
不能够啊,你main函数的头文件里 有没有包含这个类呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
还不错嘛
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询