Estructura anónima de C++

Sheeraz Gul 12 octubre 2023
Estructura anónima de C++

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.

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

Artículo relacionado - C++ Struct