所以我想做的是
使用我的基类的构造函数初始化我的子类的构造函数。
这是我的基类构造函数的样子。
Appointment::Appointment(string description, int month, int day, int year, int hour, int minute):date(month, day, year){
this-> hour = hour;
this-> minute =minute;
this-> description = description;
}
这是我的子类构造函数的样子
Daily::Daily(string description, int month, int day, int year, int hour, int minute) : Appointment(description, month, day, year, hour, minute){
}
^在我的子类的构造函数(每日)中有一个错误,指出我需要显式初始化成员'date',它没有默认的构造函数。
如何在子类构造函数的初始化列表中显式初始化'date'和'Appointment'?
它看起来像这样吗?
Daily::Daily(string description, int month, int day, int year, int hour, int minute) : Appointment(description, month, day, year, hour, minute):Date(month, day, year)
由于
答案 0 :(得分:1)
使用您发布的this other question考虑date
和appointment
,如下:
Date date;
Appointment appointment;
您可以使用此构造函数语法:
Daily::Daily(string description, int month, int day, int year, int hour, int minute) : appointment(description, month, day, year, hour, minute), date(month, day, year) { ... }
通常在以下定义中:
A::A(...) : x(...), y(...), ... {...}
x(...), y(...), ...
是初始化列表,其目的是初始化类的成员对象。
答案 1 :(得分:0)
应以逗号分隔
Daily::Daily(string description, int month, int day, int year, int hour, int minute) : Appointment(description, month, day, year, hour, minute), Date(month, day, year)
答案 2 :(得分:0)
如果Daily类有一个(Date)并且有一个(Appointment)意味着它是一个合成,那么你必须使用如下所示的初始化列表
Daily::Daily(string description, int month, int day, int year, int hour, int minute) :
Appointment(description, month, day, year, hour, minute),
Date(month, day, year) {}
但是如果Daily只有一个(约会) - 组合 - 并且我可以看到约会有一个(日期) - 组合 - 那么每日构造函数应该是这样的
Daily::Daily(string description, int month, int day, int year, int hour, int minute) :
Appointment(description, month, day, year, hour, minute) {}
并且Appoiintment参数化构造函数将调用Date参数化构造函数