У меня есть класс Дата. пусть дата будет:
class Date
{
private:
unsigned int _day;
unsigned int _month;
unsigned int _year;
public:
const unsigned int& Day;
const unsigned int& Month;
const unsigned int& Year;
Date() : Day(_day), Month(_month), Year(_year)
{ }
}
По какой-то причине после того, как конструктор называется Day, Month и Year, не указывайте / ссылайтесь на _day, _month и _year.
Одно из моих предположений состояло бы в том, что они устанавливаются до того, как память будет выделена классу. Как мне решить эту проблему (иначе говоря, установить ссылки после выделения памяти)?
Заранее спасибо!
РЕДАКТИРОВАТЬ: Больше информации
Значение _day (например,) не возвращается, когда я получаю значение Day. Я получаю, казалось бы, случайное число.
Не очень понятно, чего вы хотите достичь. В вашем классе Дата вы можете получить доступ _date, _month, _year
напрямую, почему вы хотите установить другую ссылку?
Но чтобы ответить на ваш вопрос
Значение _day (например,) не возвращается, когда я получаю значение Day. Я получаю, казалось бы, случайное число
На самом деле значения возвращаются, но вы получаете мусор, потому что _day, _month и _year — просто неинициализированные целые числа. Вам нужно сначала инициализировать их в списке инициализаторов:
Date() : _day(0), _month(1), _year(2), Day(_day), Month(_month), Year(_year)
Вы должны выставлять их, используя методы получения, возвращающие константные ссылки, чтобы избежать необходимости их хранить, это гораздо удобнее.
class Date {
private:
unsigned int _day;
unsigned int _month;
unsigned int _year;
public:
const unsigned int& Day(){return _day;}
const unsigned int& Month(){return _month;}
const unsigned int& Year(){return _year;}
}
Date::Date(unsigned int myDay, unsigned int myMonth, unsigned int myYear)
{
//Assign values here in constructor.
}
Вы можете написать отдельные методы для возврата дня, месяца или года в классе или любой их комбинации для любых других форматов дат, которые вы запланировали в дизайн-документе.