سؤال

كائن من البنية/فئة (لا يوجد لديه البناء) يمكن إنشاؤها باستخدام قائمة التهيئة. لماذا هذا غير مسموح به على بنية/فئة مع البناء?

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 ++ لا يسمح بذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top