0

私はこの構造体を持っています:

struct foo {
   int a;
   union {
      struct {
         int b;
         struct bar
         {
            int c;
            int d;
         } *aBar;
      } in;
   } u;
};

Visual C ++でbar型の変数を宣言するにはどうすればよいですか?

4

2 に答える 2

1

次のような構造体を宣言すると:

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;
于 2012-09-10T17:20:51.470 に答える
0

ありがとうAjay、私はそのように解決しました:

foo *k;
decltype(k->u.in.aBar) j;
j->c = 1;
j->d = 1;
于 2012-09-10T19:30:29.987 に答える