C++ 匿名構造体

Sheeraz Gul 2023年10月12日
C++ 匿名構造体

このチュートリアルでは、C++ での無名構造体の使用について説明します。

C++ の匿名構造体

匿名構造体は、C 言語でもサポートされていなかったため、C++ ではサポートされていませんが、C とは異なり、C++ は匿名共用体をサポートしています。構造体と共用体に関する ANSI C および C++ 標準によると、次のようになります。

  1. ANSI C++ 匿名共用体: サポート
  2. ANSI C++ 匿名構造体: サポートされていません
  3. ANSI C 匿名共用体: サポート
  4. 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 C11gcc、および Apple の llvm で許可されていますが、ISO C++11 ではサポートされていません。

著者: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

関連記事 - C++ Struct