2014-01-16 69 views
0

所以我想要做的就是初始化列表:从基类的构造函数和成员函数

初始化我的子类的构造函数与我的基类的构造函数。

这是我的基类构造函数的样子。

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'和'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

可能重复[Undeclared identifier?我以为我定义了它](http://stackoverflow.com/questions/21156969/undeclared-identifier-i-thought-i-defined-it) – Shoe

+0

因此,你的基类和派生类都有不同的'日期'数据成员? – juanchopanza

回答

1

考虑dateappointment,使用this other question你贴出来,是因为:在

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) { ... } 

一般:

Date date; 
Appointment appointment; 

您可以使用此构造函数的语法定义如下:

A::A(...) : x(...), y(...), ... {...} 

x(...), y(...), ...初始化列表其目的是初始化类的成员的对象。

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) 
0

如果每日类有一个(日期),并有一个(约会),这meanse这是一个成分,那么你必须使用初始化列表如下图所示

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) {} 

,但如果每天有(预约)仅-composition-和我所看到的约会有(日期)-composition-然后每日构造函数应该是这样的

Daily::Daily(string description, int month, int day, int year, int hour, int minute) : 
    Appointment(description, month, day, year, hour, minute) {} 

和Appoiintment参数化构造函数将调用Date参数化构造函数

相关问题