2013-11-02 19 views
7

私自身の構造を作成しようとしました。だから私はこのコードを書きました。C++構造体コンストラクタ

struct node 
{ 
    int val, id; 
    node(int init_val, int init_id) 
    { 
     val = init_val; 
     id = init_id; 
    } 
}; 

node t[100]; 

int main() 
{ 
... 
} 

私のプログラムをコンパイルしようとしました。

error: no matching function for call to 'node::node()' 
note: candidates are: 
note: node::node(int, int) 
note: candidate expects 2 arguments, 0 provided 
note: node::node(const node&) 
note: candidate expects 1 argument, 0 provided 
+4

'node t [100];' default-constructは各要素ですが、 'node'にはデフォルトのコンストラクタがありません。 – 0x499602D2

+1

可能な複製[型の配列を宣言するために型がデフォルトのコンストラクタを必要としますか?](http://stackoverflow.com/questions/2231414/does-a-type-require-a-default-constructor-in -order-to-it-array-of-it) – bames53

答えて

13
node t[100]; 

nodeのデフォルトコンストラクタを呼び出すことで、配列を初期化しようとします。しかし、私はエラーを得ました。あなたはpush_backを使用して(、既定のコンストラクタ

node() 
{ 
    val = 0; 
    id = 0; 
} 

か、むしろ冗長に提供

node t[100] = {{0,0}, {2,5}, ...}; // repeat for 100 elements 

か、あなたがC++を使用しているので、

明示的にすべての100個の要素を初期化し、代わりに std::vectorを使用し、それに追加することができどちらか)実行時に

std::vector<node> t; 
+0

thaks for help、それは動作します! – PepeHands

+1

@imonc:+1ありがとう – lolando

9

このエラーは修正されます。

デフォルトコンストラクタを宣言する必要があります。

+0

はい、ありがとう) – PepeHands

関連する問題