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){} //这样没用
展开
 我来答
纯情少年落雨妹
2012-12-05 · TA获得超过102个赞
知道小有建树答主
回答量:101
采纳率:0%
帮助的人:77.9万
展开全部
Date()里面的用你自定义的结构体类型做形参的类型!
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)传递的方法啊?
追答
可以当然是可以!就看你形参是什么类型的了!你初始化的到底是不是结构体变量!
其实构造函数和自定义的一般函数差不多,就是和类同名,没有返回值,用于实例化类时初始化下类里的成员!
所以关键还是看你的构造函数的形参类型,由于你是要初始化的成员主要是一个结构体,所以用结构体类型作为形参类型比较清晰!
在你的第一个问题里面显然是把一般变量和结构体变量里的变量弄混了!这样怎么能初始化结构体变量!
解释的挺啰嗦的,希望能有帮助!
carea
2012-12-05 · TA获得超过459个赞
知道小有建树答主
回答量:395
采纳率:65%
帮助的人:106万
展开全部
结构体本身就是一个class只不过所有成员的默认访问级别为public。它定义构造函数和普通class一样的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式