البرمجة

خطأ make_shared في تهيئة قائمة

عند استخدام make_shared لإنشاء shared_ptr للفئة vector، يتم تمرير المعلمة المباشرة إلى البناء الموجود في الفئة vector، والذي لا يحتوي على بناء يقبل قائمة المبادئ المباشرة {2, 3, 5, 8}. بدلاً من ذلك، يمكن تمرير معلمة فارغة إلى make_shared ثم استخدام دالة push_back لإضافة القيم بشكل فردي، كما هو موضح في المثال التالي:

cpp
#include #include #include using std::cout; using std::make_shared; using std::shared_ptr; using std::vector; int main() { shared_ptrint>> pointer = make_sharedint>>(); pointer->push_back(2); pointer->push_back(3); pointer->push_back(5); pointer->push_back(8); cout << (*pointer)[3]; // output: 8 return 0; }

هذا المثال يستخدم make_shared لإنشاء shared_ptr فارغ، ثم يتم إضافة القيم إلى الفئة vector باستخدام دالة push_back بشكل فردي.

المزيد من المعلومات

عند استخدام make_shared لإنشاء shared_ptr، يتم تمرير المعلمة إلى بناء الفئة المحتواة (في هذه الحالة vector)، وليس مباشرة إلى البناء المباشر للفئة. هذا يعني أن البناء المستخدم يجب أن يقبل المعلمات التي تم تمريرها إليه، وفي حالة vector، فإن البناء المباشر للفئة vector لا يقبل مثل هذه المعلمات.

بالإضافة إلى ذلك، يمكن استخدام make_shared مع vector ومعظم الفئات القياسية الأخرى التي تحتوي على بناء قبول معلمات المبادئ المباشرة، مثل std::string، std::pair، std::map، وغيرها.

مقالات ذات صلة

زر الذهاب إلى الأعلى

هذا المحتوى محمي من النسخ لمشاركته يرجى استعمال أزرار المشاركة السريعة أو تسخ الرابط !!