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
Foi útil?

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
scroll top