HOWTO · C++

Estructura anónima de C++

Este tutorial demuestra el uso de estructuras anónimas en C++.

En esta página

Este tutorial demuestra el uso de estructuras anónimas en C++.

Estructura anónima en C++

Las estructuras anónimas no son compatibles con C++, ya que tampoco lo eran con el lenguaje C, pero C++ admite uniones anónimas, a diferencia de C. De acuerdo con los estándares ANSI C y C++ sobre estructuras y uniones:

  1. Uniones anónimas ANSI C++: Compatible
  2. Estructuras anónimas ANSI C++: no compatibles
  3. Uniones anónimas ANSI C: Compatible
  4. Estructuras anónimas ANSI C: no compatibles

C++ no admite estructuras anónimas porque C no lo admite, lo cual es necesario para la compatibilidad. No hay uso de estructuras anónimas en C++, pero proporciona algunas alternativas.

Por ejemplo, vea el código a continuación.

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

El código anterior proporciona funciones para tipos definidos por el usuario similares a las estructuras anónimas. Se puede hacer algo similar usando las uniones en C++.

Vea el código a continuación.

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

Las estructuras anónimas ahora están permitidas en ISO C11, gcc y llvm de Apple, pero no son compatibles con ISO C++11.