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を指さない/参照しないでください。

私の推測の1つは、メモリがクラスに割り当てられる前に設定されているということですが、この問題を解決するにはどうすればよいですか(メモリ割り当て後に参照を設定することもできます)。

前もって感謝します!

編集:詳細

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参照を返すゲッターを使用してそれらを公開する必要があります。これははるかに便利です。

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 に答える