Tüm sınıf/yapı veri üyeleriniz başlatıcı içermiyorsa, nesneyi oluşturmak için tekdüzen başlatma sözdizimini kullanabilirsiniz.Statik olmayan veri üyesi başlatıcılar neden tekdüzen başlatma sözdizimini bozuyor?
struct foo
{
int i;
float f;
};
...
foo bar{ 5, 3.141f };
Ancak, bir veya daha fazla üyenin başlatıcıları varsa, tekdüze başlatma sözdizimi geçersiz olur.
struct foo
{
int i;
float f = 0;
};
...
foo bar{ 5, 3.141f }; // Compiler error.
bir veri üyesi başlatıcısı eklenmesi otomatik olarak bir veya daha fazla varsayılan Kurucular uygular ve initialization_list
yapıcı varsayılan uygulama bastırır tahmin. Bu amaçlanan standart mı? Neden bu şekilde çalışıyor?
"initializer_list" yapıcısının varsayılan uygulaması yok ". İlk snippet'te sahip olduğunuza * toplu başlatma işlemi * denir. – Xeo
@ Xeo'nun yorumunu tamamlamak için, bkz. * 8.5.1 [dcl.init.aggr] * ve * 8.5.4 [dcl.init.list] *. – syam
İlgili: http://stackoverflow.com/questions/4178175/what-are-aggregates-and-pods-and-how-why-are-they-special/7189821#7189821 –