1

我有一个班级日期。让日期为:

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 的值(例如)。我得到一个看似随机的数字。

4

3 回答 3

4

目前还不是很清楚你想要实现什么。在您的 Date 类中,您可以 _date, _month, _year直接访问为什么要设置另一个参考?

但是要回答你的问题

当我获得 Day 的值时,不会返回 _day 的值(例如)。我得到一个看似随机的数字

实际上,这些值正在被返回,但是你得到了垃圾,因为 _day、_month 和 _year 只是未初始化的整数。您需要先在初始化列表中初始化它们:

Date() : _day(0), _month(1), _year(2), Day(_day), Month(_month), Year(_year)
于 2013-02-06T01:00:52.200 回答
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;}
}
于 2013-02-06T00:54:56.670 回答
0
Date::Date(unsigned int myDay, unsigned int myMonth, unsigned int myYear)
{
    //Assign values here in constructor.
}

您可以编写单独的方法来返回类中的日、月或年,或者它们的任意组合,用于您在设计文档中计划的任何不同的日期格式。

于 2013-02-06T01:00:59.860 回答