"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا لا يمكنني استدعاء وظائف الصديق المضمن مباشرة من داخل الفئة المحددة الخاصة بها؟

لماذا لا يمكنني استدعاء وظائف الصديق المضمن مباشرة من داخل الفئة المحددة الخاصة بها؟

تم النشر بتاريخ 2024-12-22
تصفح:851

Why Can\'t I Directly Call Inline Friend Functions from Within Their Defining Class?

نطاق الرؤية لوظائف الصديق المضمنة

على الرغم من تحديد وظائف الأصدقاء المضمنة داخل الفصل، فإن نطاقها الفعلي يمتد إلى ما وراء حدود الفصل. يفرض معيار C أن اسم وظيفة الصديق المضمنة يشير إلى وظيفة مُعلنة في أقرب نطاق مساحة اسم متضمن.

ومع ذلك، لا يمكن الوصول إلى هذه الوظيفة المُعلنة من خلال بحث غير مؤهل أو مؤهل حتى يتم توفير إعلان مطابق ضمن مساحة الاسم تلك. نِطَاق. وبالتالي، فإن الاستدعاءات المباشرة لوظيفة الصديق من الفئة نفسها، أو النطاق المتضمن، أو وظائف الأعضاء ستؤدي إلى حدوث أخطاء.

ينبع هذا القيد من حقيقة أنه تم الإعلان عن وظيفة الصديق في الفئة دون تجاوز أو إعادة تعريف اسم الوظيفة الموجودة. لذلك، لا يتعرف المترجم على الوظيفة الموجودة في الفئة أو نطاق مساحة الاسم المتضمن حتى يواجه إعلانًا صريحًا في مساحة الاسم تلك.

للوصول إلى وظيفة الصديق المضمنة، يمكنك استخدام البحث المعتمد على الوسيطة (ADL) . يسمح ADL للمترجم بالبحث عن الوظيفة بناءً على أنواع الوسائط المستخدمة في الاستدعاء. يتوافق هذا الأسلوب مع المبدأ القائل بأن الوظيفة تعتبر "ذات صلة" بالنوع الذي يتم تمريره كوسيطة.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3