C ++: قائمة مُنشئ مقابل قائمة المهيئة في الهيكل/الفئة
-
21-09-2019 - |
سؤال
كائن من البنية/فئة (لا يوجد لديه البناء) يمكن إنشاؤها باستخدام قائمة التهيئة. لماذا هذا غير مسموح به على بنية/فئة مع البناء?
struct r { int a; };
struct s { int a; s() : a(0) {} };
r = { 1 }; // works
s = { 1 }; // does not work
المحلول
لا ، لم يعد الكائن الذي يحتوي على مُنشئ هو جراب (بيانات قديمة عادي). يجب أن تحتوي الكائنات على أنواع جراب أخرى فقط كأعضاء غير متكليين (بما في ذلك الأنواع الأساسية). يمكن أن يكون للجراب وظائف ثابتة وأعضاء البيانات المعقدة الثابتة.
لاحظ أن معيار C ++ القادم سيسمح لك بتحديد قوائم التهيئة ، والتي ستتيح تهيئة الكائنات غير POD باستخدام الأقواس.
نصائح أخرى
إذا كنت تعني بسؤالك أن تسأل ، "هل يمكنني القيام بذلك:"
struct MyGizmo
{
char things_[5];
MyGizmo() : things_({'a', 'b', 'c', 'd', 'e'}) ();
};
... ثم الجواب هو لا. C ++ لا يسمح بذلك.
لا تنتمي إلى StackOverflow