私はプログラム内にいくつかの異なる構造を作成しました。私は今入れ子構造の構造を持っていますが、正しく初期化する方法を考えることはできません。構造を以下に列挙する。C++でネストされた構造体を初期化する方法は?
/***POINT STRUCTURE***/
struct Point{
float x; //x coord of point
float y; //y coord of point
};
/***Bounding Box STRUCTURE***/
struct BoundingBox{
Point ymax, ymin, xmax, xmin;
};
/***PLAYER STRUCTURE***/
struct Player{
vector<float> x; //players xcoords
vector<float> y; //players ycoords
BoundingBox box;
float red,green,blue; //red, green, blue colour values
float r_leg, l_leg; //velocity of players right and left legs
int poly[3]; //number of points per polygon (3 polygons)
bool up,down;
};
次に、新しく作成されたPlayerという名前のplayer構造体を初期化しようとします。
//Creates player, usings vectors copy and iterator constructors
Player player = {
vector<float>(xcords,xcords + (sizeof(xcords)/sizeof(float))), //xcords of player
vector<float>(ycords,ycords + (sizeof(ycords)/sizeof(float))), //ycoords of playe
box.ymax = 5; //create bounding box
box.ymin = 1;
box.xmax = 5;
box.xmin = 1;
1,1,1, //red, green, blue
0.0f,0.0f, //r_leg,l_leg
{4,4,4}, //number points per polygon
true,false}; //up, down
これは、ボックスに関するいくつかの異なるエラーを引き起こします。ボックスに明示的な識別子がなく、 '。'の前に構造体や構文がありません。
私は、ちょうどPlayerの構造体を作成し、以下のようにそれがメンバーだ初期化してみました:
Player bob;
bob.r_leg = 1;
をしかし、コンパイラはボブが何の識別子を持っていないか、いくつかの構文が欠落していると考えると、これは、より多くのエラーが発生します。
私はその問題を尋ねましたが、(親)構造内のネストされた構造の多くの異なるメンバーをどのように初期化するかを示す記事は見つかりませんでした。この件に関する助けがあれば、大いに感謝します.-) !!! 、建設中にこれらの値を追加するための
struct Point{
Point() : x(0), y(0)
{ };
float x;
float y;
};
または
struct Point{
Point()
{
x = 0;
y = 0;
};
float x;
float y;
};
このようなコンストラクタにパラメータを追加します:
私はバウンディングボックスストアはそうymax.xとymax.y必要initalisingを必要とするポイントとして、このスニペットはすでに問題を抱えている実現:これはうまくいくかもしれないと述べた
。しかし、私はこれを試してみましたが、同じエラーがありました。 (つまり、ymax.y = 5、ymax.x = 1などなど) – binarycreations
エラーを添付してください。 –
とにかくそれらをコンストラクタで初期化する必要があります。未定義の値は必要ありません。 –