2011-12-03 12 views
2

私はシーンという構造を持っています。シーンと呼ばれる構造の中で、私は他のシーンオブジェクトの配列を作る必要があります。これは可能ですか?構造体内の特定の構造体の配列を作る。

+1

なし............. –

+0

ようなクラスが持っているだろうか意味:これは私が昨日書いたいくつかのコードからでしょうか? –

+0

@KerrekSB Xの中に他の箱が入っている箱を考える。 – Beginner

答えて

8

いいえ、sceneが完全に定義されているため、コンパイラはそのサイズがわかりませんし、配列を作成するためのサイズもわかりません。また

class scene { 
    scene* array[20]; 
}; 

、あなたがすることができます:全て同じサイズである - ポインタが(感謝ナワズをメンバーとその他の奇妙へのポインタをカウントしない)ので、

しかし、あなたは、sceneからポインタの配列を持つことができますを格納、一層代わり

class scene { 
    scene() : array(new scene[20]) { } 
    ~scene() { delete[] array; } 

    scene* array; 
}; 

またはダイナミックアレイdelete[]new[]で割り当てと割り当て解除をポイントするポインタを格納、vectorsceneのS:

class scene { 
    vector<scene> array; 
}; 

vectorと、あなたはありません手動メモリ管理でサイズ変更可能な配列を取得します。

+1

わかりません、私はちょうど "はい"で始まり、もう一方は "いいえ"で2つの答えをアップvvしました。私は愚かだと思うが、どちらも正しい。 –

+0

誰かがトリガーを速くしている。私はupvoted。 :) – DejanLekic

+0

@ MichaelKrelin-hacker私はちょうどNawazよりも文字通り "配列"という言葉を取った。 –

2

はい。出来るよ。しかし、あなたがポインタとしてメンバを宣言するためにきたよう

scene parent; 
parent.chidren = new scene[100]; //100 children! 

はちょうどあなたがあなた自身を割り当て、メモリを解放していることに注意してください:として

struct scene 
{ 
    //other members 

    scene *children; //this is what you need. 
         //you cannot make it like : scene children[100]; 
}; 

が続いて動的配列を作成します。

また、std::vector<scene*>またはboost::ptr_vector<scene>を使用することもできます。

0

確かに可能です。

擬似コード:

struct Scene { 
    int id; 
    Scene* scenes; 
}; 

PS。あなたは簡単にこれをテストすることができます - それほど怠惰ではありません。 ;)

0

std::vectorを使用するとできます。 `;`構造体のX {X} A:

#include <vector> 
struct ChangeList // Tree of changes in a tree of values 
    { 
    int index ; 
    std::vector<ChangeList> Changes ; 
    } ; 
関連する問題