Copia inicializacion de llaves de constructor.
"podemos inicializar objetos de una clase para los cuales no hemos definido ningún constructor usando:
inicialización de miembros.copia inicializacioninicialización por defecto.Por ejemplo:
struct Work {
string author;
string name;
int year;
};
Work s9 { "Bethoven",
"Symphony No. 9 in D minor, Op. 125; Choral",
1824
}; // memberwise initialization
Work currently_playing {s9}; // copy initialization
Work none {}; // default initialization
El lenguaje de programación C ++ 4ª ed. Capítulo 17.3.1
Por ejemplo:
struct Data
{
int mMember1;
float mMember2;
char mMember3;
};
int main()
{
Data aData_1{1,0.3,33};
Data aData_2{aData_1};
return EXIT_SUCCESS;
}
Esto debe funcionar, aunque obtengo un error de compilación tanto con GCC como con Clang. El error es "no se pueden convertir datos a int" en ambos compiladores. Sin embargo, al implementar el constructor de copia, este error desaparece o no se implementa, pero se utiliza la sintaxis de llaves. El problema es un poco estúpido y al cambiar el rizado por los tirantes redondos se resuelve el problema. Pero, ¿por qué no se siguen las reglas de TC ++ PL ?, ¿es un problema del compilador o estoy entendiendo mal algo? Gracias por adelantado.