C++中类中的结构体数据成员怎么用构造函数初始化
structTime{inthour;intminute;AOPap;Time(inth=0,intmi=0,AOPa=AM):hour(h),minute(mi),ap...
struct Time
{
int hour;
int minute;
AOP ap;
Time(int h=0,int mi=0,AOP a=AM):hour(h),minute(mi),ap(a){}
};
class Date
{
private:
int year;
int month;
int day;
Time time;
public:
Date(int y=1,int m=1,int d=1):year(y),month(m),day(d){}
//Date(int y=1,int m=1,int d=1,int h=0,int mi=0,AOP a=AM):year(y),month(m),day(d),(h,mi,a){} //这样没用 展开
{
int hour;
int minute;
AOP ap;
Time(int h=0,int mi=0,AOP a=AM):hour(h),minute(mi),ap(a){}
};
class Date
{
private:
int year;
int month;
int day;
Time time;
public:
Date(int y=1,int m=1,int d=1):year(y),month(m),day(d){}
//Date(int y=1,int m=1,int d=1,int h=0,int mi=0,AOP a=AM):year(y),month(m),day(d),(h,mi,a){} //这样没用 展开
2个回答
展开全部
Date()里面的用你自定义的结构体类型做形参的类型!
class Date
{
public:
Date(struct Time *t)
{
//这里是实现功能函数体,也就是初始化结构体数据成员!
}
private:
struct Time *T;//要初始化的结构体数据成员!
//Date类里其他成员我就省略没写了!...
}
希望对你有用,谢谢!
希望多看看C++类、构造函数等相关内容!
class Date
{
public:
Date(struct Time *t)
{
//这里是实现功能函数体,也就是初始化结构体数据成员!
}
private:
struct Time *T;//要初始化的结构体数据成员!
//Date类里其他成员我就省略没写了!...
}
希望对你有用,谢谢!
希望多看看C++类、构造函数等相关内容!
追问
你的意思是只能这样传递是吧:
#include
using namespace std;
struct time
{
int hour;
int minute;
};
class date
{
private:
time ti;
public:
date(time t):ti(t){}
};
int main()
{
time t;
t.hour=12;
t.minute=00;
date d(t);
return 0;
}//这样不报错
那可不可以有直接date(12,00)传递的方法啊?
追答
可以当然是可以!就看你形参是什么类型的了!你初始化的到底是不是结构体变量!
其实构造函数和自定义的一般函数差不多,就是和类同名,没有返回值,用于实例化类时初始化下类里的成员!
所以关键还是看你的构造函数的形参类型,由于你是要初始化的成员主要是一个结构体,所以用结构体类型作为形参类型比较清晰!
在你的第一个问题里面显然是把一般变量和结构体变量里的变量弄混了!这样怎么能初始化结构体变量!
解释的挺啰嗦的,希望能有帮助!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询