2016-05-24 50 views
1

他の構造体内で定義されている構造体のメンバーにはどうやってアクセスしますか?
と仮定我々は、構造体が定義されているように:C++の構造体内の構造体

struct FR { 
    size_t n; 
    struct FR_1{ 
     unsigned char r; 
     unsigned char g; 
     unsigned char b; 
    }; 
}; 

のVisual Studio 2015、書き込み中:

struct FR x; 
    x.FR_1. 

FR_1 members.Onため一方、書き込みオプションを表示しません:

struct FR_1 y; 件:Error,incomplete type is not allowed.

この種の構造体?

+1

を書くことができます

struct FR { size_t n; struct FR_1 { unsigned char r; unsigned char g; unsigned char b; } fr1; }; 

としてそれを宣言する必要があります。 – Jarod42

+1

あなたはそれを** FR :: FR_1 ** – cup

+1

として宣言する必要があります。それは、すべての[まともなC++の本](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide- and-list?lq = 1)。たぶんあなたは1つを取得し、言語を学ぶ必要があります。 –

答えて

8

このサンプルでは、​​種類がstruct FR_1,であり、その種類のメンバーではないと宣言されています。代わりに、試してください:あなたは、あなたのFR structrureタイプFR_1の変数を宣言するだけではなく、型自体する必要が

struct FR { 
    size_t n; 
    struct FR_1 { 
     unsigned char r; 
     unsigned char g; 
     unsigned char b; 
    } fr1; 
}; 

FR x; 
x.fr1.r = 0; 
4
struct FR { 
    size_t n; // < Declaration of member variable 
    struct FR_1{ // < Declaration of nested type 
     unsigned char r; 
     unsigned char g; 
     unsigned char b; 
    }; 
    FR_1 fr1; // < Declaration of member variable 
}; 

FR fr; 
fr.fr1.r = 0; 
0

実際に構造のインスタンスを作成する必要があります。通常struct宣言は、フォーム

struct struct-name { 
    members 
} inst; 

を次のだからあなたはあなたが内部構造が、そのタイプの無メンバーを定義する今、あなたは

FR fr; 
fr.fr1.r = 255; 
. . . 
関連する問題