Inicialização de chaves de construtor de cópia
"podemos inicializar objetos de uma classe para a qual não definimos nenhum construtor usando:
inicialização de membros.cópia de inicialização.inicialização padrão.Por exemplo:
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
A linguagem de programação C ++ 4th Ed. Capítulo 17.3.1
Por exemplo:
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;
}
Isso deve funcionar, embora eu receba um erro de compilador tanto com o GCC quanto com o Clang. O erro é "não é possível converter dados em int" em ambos os compiladores. No entanto, implementando o construtor de cópia, este erro desaparece ou sem implentá-lo, mas usando a sintaxe das chaves redondas. O problema é um pouco estúpido e mudando o encaracolado para as chaves redondas o problema é resolvido. Mas por que as regras do TC ++ PL não são seguidas ?, é um problema de compilador ou estou entendendo mal alguma coisa ?. Desde já, obrigado.