в первую очередь, привет всем,C++ конструктор с другим классом-типом данных
Я новичок в этом форуме, так что я надеюсь, что я не сделал какую-либо новобранец ошибки, если это так - пожалуйста исправь меня :). Во-вторых: английский не мой родной язык, поэтому я надеюсь, что смогу сделать мою проблему понятной.
Что касается моей проблемы:
Я должен написать программу на C++ с 2 классами, класс 1 Даты с 3x неподписанных Int на день, месяц и год, и класс 2 Времени с 2м беззнаковым междунар на минуту и час, и 1x Дата.
- каждый класс имеет конструктор по умолчанию, который вызывает конструктор перегрузки (мы должны работать со списками Инициализатора) Моя проблема в том, что я просто не могу понять, как я могу использовать член класса Date в моем времени класс.
Я знаю, что это не совсем ясно, что моя проблема, так вот упрощенная версия моего кода: главная:
#include "Date.hpp"
#include "Time.hpp" //(+ iomanip/iostream)
int main(){
Date d1; //Calls Default Constructor of class Date, which initialises with (1,1,2000)
Time t1(d1,23,30); //should call ovrld-constr. of class Time and keep the date of d1
в моем «Time.cpp» я пытался чего-л, как:
Time::Time(Date x, unsigned int y, unsigned int z)
: d(Date::Date(x)), minute(y), hour(z) //try to call the def constr of class Date
{
return;
}
Time::Time() : Time(Date::Date(), 00, 00) //should call the ovrld constr of class Time
{
return;
}
, но, конечно, это не работает ... Компилятор всегда говорит:
main.cpp:(.text+0x35c):undefined reference to `Time::Time()'
, если это помогает, вот выдержка из моего (полностью рабочий) «Date.cpp»:
Date::Date(unsigned int x, unsigned int y, unsigned int z)
: day(x), month(y), year(z)
{
if(valiDate(day, month, year)==false){ //ValiDate is a function which checks the input
day=1;month=1;year=2000;} //default date, if Date is not Valid
return;
}
Date::Date() : Date(1,1,2000)
{
return;
}
Я надеюсь, что это было достаточно, чтобы сделать мою проблему ясно, если нет, то я всегда могу показать вам полный источник код. Важное примечание: мне не разрешено (!) Редактировать main.cpp. Кроме того, если кто-то может объяснить мою ошибку, а не просто отправить полное решение, было бы очень полезно, потому что я думаю, что решение, которое я в худшем случае, даже не понимаю, не очень помогает мне изучение.
Заранее спасибо за помощь,
С наилучшими пожеланиями.
редактировать:
Я сожалею, я забыл два class.hpp.
1) Рабочий Date.hpp (экстракт)
class Date
{
public:
Date();
Date(unsigned int, unsigned int, unsigned int);
private:
unsigned int day, month, year;
bool valiDate(unsigned int, unsigned int, unsigned int);
};
2) мой (не работает) Time.hpp.
class Time
{
public:
Time();
Time(Date, unsigned int, unsigned int);
private:
unsigned int minute, hour;
Date d;
};
Добавили ли вы Time.cpp в свой проект? – deepmax
Предоставьте [короткий, самодостаточный, правильный пример] (http://sscce.org) вместо неструктурированного беспорядка фрагментов кода! – Oswald
Покажите нам свой Time.hpp – derpface