私はこの構造体を持っています:
struct foo {
int a;
union {
struct {
int b;
struct bar
{
int c;
int d;
} *aBar;
} in;
} u;
};
Visual C ++でbar型の変数を宣言するにはどうすればよいですか?
私はこの構造体を持っています:
struct foo {
int a;
union {
struct {
int b;
struct bar
{
int c;
int d;
} *aBar;
} in;
} u;
};
Visual C ++でbar型の変数を宣言するにはどうすればよいですか?
次のような構造体を宣言すると:
struct
{
int b;
} in;
in
実際には、名前のないデータ型を持つname のオブジェクトを作成しています。このデータ型は、コンパイラによって内部的に命名され、コンパイラに依存します。上記のスタイルはin
、型ではなく変数であると宣言しています!
それをタイプにしたい場合は、与えられたアプローチのいずれかを使用してください:
// Approach 1
struct in{...};
// Approach 2
typedef struct {..} in; // in is now a type, because of `typedef`
C++0x をサポートするコンパイラがあり、特に typeキーワードがある場合は、最初のスタイル (変数decltype
を作成する) に対して使用できます。in
例:
decltype(in) in_var;
in_var.b = 10;
ありがとうAjay、私はそのように解決しました:
foo *k;
decltype(k->u.in.aBar) j;
j->c = 1;
j->d = 1;