我有一个课程日期。让日期为:
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(例如)的值。我得到一个看似随机的数字。
答案 0 :(得分:4)
目标还不是很清楚。在您的Date类中,您可以直接访问_date, _month, _year
为什么要设置另一个引用?
但要回答你的问题
当我获得Day的值时,不会返回_day(例如)的值。我得到一个看似随机的数字
实际上,值正在返回,但是你得到了垃圾,因为_day,_month和_year只是未初始化的整数。您需要首先在初始化列表中初始化它们:
Date() : _day(0), _month(1), _year(2), Day(_day), Month(_month), Year(_year)
答案 1 :(得分:1)
您应该使用返回const引用的getter公开它们以避免必须存储它们,这样更方便。
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;}
}
答案 2 :(得分:0)
Date::Date(unsigned int myDay, unsigned int myMonth, unsigned int myYear)
{
//Assign values here in constructor.
}
您可以编写单独的方法来返回课程中的日,月或年,或者您在设计文档中计划的任何不同日期格式的任意组合。