0

休閑中のコードは、コンストラクターからの日数と日数を解決できないことを教えてくれますが、その理由を誰かが知っていますか?

template <class T> struct Array{
    int days;
    T * M;
};

クラスの建設者:

void constr(Array<Expe> &o){
        o=new Array;
        o->days = days;
        o->M = new Array[o->days];
}

編集(Luchian Grigore):

template <class T> struct Array{
int days;
T * M;
Array( int size ) : days(size), M(new int[size])
{
}
~Array()
{
   delete[] M;
}
};

このようにメインで配列を初期化しようとすると:

int main(){
//Main function of the program. no pre/ post condition.
Array <Expe> A;

エラー:

enter code here.. \ M.cpp:18:15:エラー:'Array :: Array()'の呼び出しに一致する関数がありません

4

1 に答える 1

4

Array<Expe> &oArray<Expe>ポインタではなく、オブジェクトへの参照です。再初期化する必要がある場合、構文はです。

o = Array<Expe>();

そして、あなたは以下を介してメンバーにアクセスします.

o.days = days;
o.M = new Array[o.days];

編集:

昨日と同じコードを覚えています。なぜあなたは再び適切なコンストラクターを使用しているのですか?

template <class T> struct Array{
    int days;
    T * M;
    Array( int size ) : days(size), M(new int[size])
    {
    }
    ~Array()
    {
       delete[] M;
    }
};
于 2012-04-12T13:51:51.497 に答える