HOWTO · C++
C++ 匿名構造体
このチュートリアルでは、C++ での無名構造体の使用について説明します。
このチュートリアルでは、C++ での無名構造体の使用について説明します。
C++ の匿名構造体
匿名構造体は、C 言語でもサポートされていなかったため、C++ ではサポートされていませんが、C とは異なり、C++ は匿名共用体をサポートしています。構造体と共用体に関する ANSI C および C++ 標準によると、次のようになります。
- ANSI C++ 匿名共用体: サポート
- ANSI C++ 匿名構造体: サポートされていません
- ANSI C 匿名共用体: サポート
- ANSI C 匿名構造体: サポートされていません
C++ は無名構造体をサポートしていません。これは、互換性のために必要な C が無名構造体をサポートしていないためです。 C++ では匿名構造体は使用されませんが、いくつかの代替手段が提供されます。
たとえば、次のコードを参照してください。
struct DemoVector {
float v[3];
float &operator[](int x) { return v[x]; }
float &a() { return v[0]; }
float &b() { return v[1]; }
float &c() { return v[2]; }
};
上記のコードは、無名構造体に似たユーザー定義型の機能を提供します。 C++ の共用体を使用して、同様のことを行うことができます。
以下のコードを参照してください。
union DemoVector {
struct {
float a, b, c;
};
float v[3];
};
匿名構造体は現在、ISO C11、gcc、および Apple の llvm で許可されていますが、ISO C++11 ではサポートされていません。