список инициализаторов: конструктор из базового класса и функция-член

Итак, что я хочу сделать, это

инициализируйте конструктор моего подкласса конструктором моего базового класса.

вот как выглядит мой конструктор базового класса.

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

^ в конструкторе моего подкласса (ежедневно) есть ошибка, в которой говорится, что мне нужно явно инициализировать элемент «дата», у которого нет конструктора по умолчанию.

Как явно инициализировать «дату» и «Назначение» в списке инициализаторов моего конструктора подкласса?

Это выглядит примерно так?

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)

Спасибо


person Randomkid    schedule 16.01.2014    source источник
comment
возможный дубликат необъявленного идентификатора? Я думал, что определил это   -  person Shoe    schedule 16.01.2014
comment
Итак, и ваш базовый, и производный классы имеют разные элементы данных date?   -  person juanchopanza    schedule 16.01.2014


Ответы (3)


Учитывая 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(...), ... — это список-инициализаторов, целью которого является инициализация объектов-членов класса.

person Shoe    schedule 16.01.2014

Это должно быть разделено запятой

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)
person Daniel82    schedule 16.01.2014

если у ежедневного класса есть (Дата) и есть (Назначение), что означает, что это композиция, тогда вы должны использовать список инициализаторов, как показано ниже.

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(string description, int month, int day, int year, int hour, int minute) :
   Appointment(description, month, day, year, hour, minute) {}

а параметризованный конструктор Appoiintment вызовет параметризованный конструктор Date

person Maria    schedule 16.01.2014