Pregunta

Un objeto de una estructura/clase (que no tiene constructor) se puede crear usando un lista de inicializador. ¿Por qué no se permite esto en estructura/clase con constructor?

struct r { int a; };
struct s { int a; s() : a(0) {} };
r = { 1 }; // works
s = { 1 }; // does not work
¿Fue útil?

Solución

No, un objeto con un constructor ya no se considera un POD (datos antiguos simples). Los objetos solo deben contener otros tipos de POD como miembros no estáticos (incluidos los tipos básicos). Una cápsula puede tener funciones estáticas y miembros de datos complejos estáticos.

Tenga en cuenta que el próximo estándar C ++ le permitirá definir listas de inicializador, lo que permitirá que los objetos no POD se inicialicen con los aparatos ortopédicos.

Otros consejos

Si por su pregunta, quiere decir: "¿Puedo hacer esto?"

struct MyGizmo
{
  char things_[5];
  MyGizmo() : things_({'a', 'b', 'c', 'd', 'e'}) ();
};

...Entonces la respuesta es no. C ++ no permite esto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top