HOWTO · C++

Anonyme C++-Struktur

Dieses Tutorial demonstriert die Verwendung anonymer Strukturen in C++.

Dieses Tutorial demonstriert die Verwendung von anonymen Strukturen in C++.

Anonyme Struktur in C++

Anonyme Strukturen werden in C++ nicht unterstützt, da es auch in der Sprache C nicht unterstützt wurde, aber C++ unterstützt anonyme Unions, im Gegensatz zu C. Gemäß den ANSI C- und C++-Standards für Strukturen und Unions:

  1. ANSI C++ anonyme Vereinigungen: Unterstützt
  2. Anonyme ANSI C++-Strukturen: Nicht unterstützt
  3. Anonyme ANSI C-Unions: Unterstützt
  4. Anonyme ANSI C-Strukturen: Nicht unterstützt

C++ unterstützt keine anonymen Strukturen, weil C sie nicht unterstützt, was für die Kompatibilität erforderlich ist. In C++ werden keine anonymen Strukturen verwendet, aber es bietet einige Alternativen.

Sehen Sie sich beispielsweise den folgenden Code an.

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]; }
};

Der obige Code bietet Einrichtungen für benutzerdefinierte Typen, die anonymen Strukturen ähneln. Ähnliches kann mit den Unions in C++ erreicht werden.

Siehe Code unten.

union DemoVector {
  struct {
    float a, b, c;
  };
  float v[3];
};

Die anonymen Structs sind nun in ISO C11, gcc und Apples llvm erlaubt, werden aber von ISO C++11 nicht unterstützt.