0

30 行目でエラーが発生しています (const Date date2 = new Date(31, 12, 2012);)

エラー メッセージ: 'Date*' から非スカラー型 'const Date' への変換が要求されました

以下は私のソースコードです:

class Date
{
private :
    int day ;
    int month ;
    int year ;
public :
    Date(){
        day = 1;
        month = 1;
        year = 2000;
    }
    Date(int d, int m, int y) : day(d), month(m), year(y){
    }
    int getDay () const { return day ;}
    int getMonth () const { return month ;}
    int getYear () const { return year ;}
};

int main ()
{
    const Date date ;
    const Date date2 = new Date(31, 12, 2012);

    cout <<"The month is "<< date.getMonth()<< endl ;
    cout << " The month is "<<date2.getMonth()<< endl ;
    return 0;
}
4

5 に答える 5

6

これを行う必要があります:

const Date date2(31, 12, 2012);

あなたのコードでconst Date date2は、 aは a へのDateポインターnew Date(31, 12, 2012);を返しますDate(偶然にもリークします)。

于 2013-05-27T14:10:56.887 に答える
1

さて、 usingnewは、非ポインター const 変数に割り当てようとするポインターを返します。

于 2013-05-27T14:11:09.800 に答える
0

operator newポインターを返します。本当にポインターが必要な場合は、使用する必要があります

const Date* date2 = new Date(31,12,2012);

代わりは。そして忘れないでくださいdelete date2

または、次のいずれかを実行できます。

const Date date2(31,12,2012);

また

const Date date2 = Date(31,12,2012);
于 2013-05-27T14:14:55.227 に答える