0

私は2つの構造体を持っています

        template<typename T>
        struct Node{
               T obj;
               Node* next;
               Node* prev;
               Node();
               Node(T a, Node<T>* b=NULL, Node<T>* c=NULL);
        };

        template<typename T>
        struct Monomial : public Node<T>{
               int n;
               Monomial(T coeff = 0, int p = 0) : Node<T>(coeff){ n=p; }
        };

コンパイラは、私が何か間違ったことをしていると言いますが、それを理解できませんか?

私は関数でこれをやろうとしましたmain:

         Monomial<int> *m1;
         m1->n=5;
         m1->obj=6;

私が受け取ったエラーメッセージは「ランタイムチェックの失敗 #3 - 変数 'm1' は初期化されずに使用されています。」

4

2 に答える 2

3

このように m1 を初期化します。

Monomial<int> *m1 = new Momonial<int>();
于 2013-04-23T00:16:29.557 に答える
3

ポインターを宣言してもオブジェクトは作成されません。

// Allocate memory for the object and create it.

Monomial<int> *m1 = new Monomial<int>;
m1->n=5;
m1->obj=6;

// When you are done with the object, destroy it and deallocate memory.
delete m1;

スタック上にオブジェクトを交互に作成する

Monomial<int> m1;
m1.n=5;
m1.obj=6;

new電話をかけたりする必要はありませんdelete

于 2013-04-23T00:17:05.360 に答える