C ++: lista de construtor versus inicializador em estrutura/classe
-
21-09-2019 - |
Pergunta
Um objeto de uma estrutura/classe (que não tem construtor) pode ser criado usando um Lista de inicializador. Por que isso não é permitido na estrutura/classe com construtor?
struct r { int a; };
struct s { int a; s() : a(0) {} };
r = { 1 }; // works
s = { 1 }; // does not work
Solução
Não, um objeto com um construtor não é mais considerado um pod (dados antigos simples). Os objetos devem conter apenas outros tipos de pods como membros não estáticos (incluindo tipos básicos). Um pod pode ter funções estáticas e membros de dados complexos estáticos.
Observe que o próximo padrão C ++ permitirá definir listas de inicializador, o que permitirá que objetos não-pod sejam inicializados com aparelhos.
Outras dicas
Se, pela sua pergunta, você pretende fazer: "Posso fazer isso:"
struct MyGizmo
{
char things_[5];
MyGizmo() : things_({'a', 'b', 'c', 'd', 'e'}) ();
};
... então a resposta é não. O C ++ não permite isso.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow