Todavía me estoy ganando mis alas C++; Mi pregunta es si tengo una estructura así:C++ initialize anonymous struct
struct Height
{
int feet;
int inches;
};
Y luego tengo algunas líneas de este modo:
Height h = {5, 7};
Person p("John Doe", 42, "Blonde", "Blue", h);
me gusta la inicialización de estructuras a través de las llaves, pero prefiero la arriba, estar en una línea, en una Estructura de Altura anónima. ¿Cómo hago esto? Mi enfoque ingenuo inicial fue:
Person p("John Doe", 42, "Blonde", "Blue", Height{5,7});
Esto no funcionó sin embargo. ¿Estoy muy lejos de la marca?
esto puede ser simplemente un ejemplo, pero, probablemente es mejor almacenar la altura característica '' como un único campo inches'. Cuando necesitas pies puedes convertir eso en pies; es mucho más fácil tratar con una sola unidad que hacer malabarismos con varias unidades, especialmente porque como ahora puedes tener múltiples valores que son iguales pero que no tienen la misma representación (por ejemplo, '{2, 3}' y '{ 1, 15} '). –
C++ 1x viene con [sintaxis de inicialización uniforme] (http://en.wikipedia.org/wiki/C%2B%2B0x#Uniform_initialization) que sería compatible con algo como esto. Es bastante probable que su compilador ya lo admita. – sbi
En lugar de 'Altura {5,7}' en el constructor de Persona, especifique '(struct Height) {5,7}' (si pasa por referencia) (o '& (struct Height) {5,7} 'si estás pasando un puntero). Básicamente estás lanzando la lista de inicializadores al tipo deseado. Es una característica C99 +, pero también debe ser utilizable con C++. – Erhhung