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:
- Uniones anónimas ANSI C++: Compatible
- Estructuras anónimas ANSI C++: no compatibles
- Uniones anónimas ANSI C: Compatible
- 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.