تمرير كائنات Const كوسائط 'this': خطأ في استبعاد المؤهل
في لغة C، تمرير كائنات const كوسائط 'this' إلى وظائف الأعضاء يمكن أن يؤدي إلى أخطاء "تمرير 'const xxx' لأن الوسيطة 'this' لوظيفة العضو تتجاهل المؤهلات". يحدث هذا لأن المترجم يأخذ في الاعتبار احتمال قيام وظائف الأعضاء غير الثابتة بتعديل الكائن، وهو أمر محظور بالنسبة للكائنات الثابتة.
تحليل المشكلة
في الكود المقدم ، يتم تخزين الكائنات الموجودة في المجموعة كـ const StudentT. عند الوصول إلى وظائف الأعضاء getId() و getName() داخل الحلقة، يكتشف المترجم هذه المشكلة نظرًا لأن الكائنات ثابتة ولم يتم وضع علامة على وظائف الأعضاء على أنها const.
الحل
لحل الخطأ، يجب إجراء وظائف getId() وgetName() const:
int getId() const { return id; } string getName() const { return name; }
يسمح هذا باستدعاء الوظائف على كائنات const دون انتهاك قواعد const.
ملاحظات إضافية
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3