我制作了一个可以保存月,日和年的日期类。但现在我有一个问题。 我已经使用这个带继承的日期类来存储例如人的Ctor(接待员,乘客等)(酒店)的dateOfBirth(事实上在人的初始化列表中使用日期类的Ctor) ),但现在我不知道我应该在main中初始化一个人的格式是什么?!反正我是否可以直接在主要的地方做到这一点?对不起,我是初学者。任何帮助赞赏。 这是我的代码的一些部分:
class date {
int month = 1;
vector<int>month_days{ 31,31,31,31,31,31,30,30,30,30,30,29 };
int day = 1;
int year = 1300;
//---------------------member functions:
public:
date(int m = 1, int d = 1, int y = 1300) {
if (m>0 && m <= 31) month = m;
if (d>0 && d <= 31) day = d;
if (y>0 && y <= 3000) year = y;
}
//some other code...
};
class person:public date {
protected:
string m_name;
string m_familyName;
string m_idNumber;
//---------------------member functions:
public:
person(string name, string familyName, string idNumber, date dateOfBirth)
: m_name(name),m_familyName(familyName),m_idNumber(idNumber),date(dateOfBirth)
{
}
//some other code...
};
这是我输入的内容,我知道它无法完成这项任务:
person a("Michael", "Deoran", "05174084", (4,17,1998));
我检查了对象的存储日期&#34; a&#34;并且它的日期返回1,1,1300,尽管如此,我也不知道该能做什么。 (顺便说一下,我定义一个与人分开的日期的原因是我超载了操作员 - 计算乘客的停留时间)
答案 0 :(得分:1)
您需要做的就是将括号更改为大括号(即代码编译,而不是设计良好且不产生-Wreorder
警告):
person a("Michael", "Deoran", "05174084", {4, 17, 1998});
带括号的版本等同于(逗号运算符):
person a("Michael", "Deoran", "05174084", 1998);
在为参数提供默认值之前,我会三思而后行。你可能不需要它们。