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

كيفية تحديد علاقات الأصدقاء في فئات القالب مع وسائط القالب المختلفة؟

تم النشر بتاريخ 2024-11-18
تصفح:741

How to Define Friend Relationships in Template Classes with Different Template Arguments?

الخوض في قوالب الفصل باستخدام أصدقاء فئة القالب

عند تحديد فئة شجرة ثنائية (BT) وفئة عنصرها (BE)، فمن الضروري من الضروري إنشاء علاقة صداقة لـ BT للوصول إلى أعضاء BE الخاصين. ومع ذلك، من المهم فهم الآليات الأساسية لتحديد العلاقة بشكل صحيح.

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

بدلاً من ذلك، يجب عليك استخدام أسماء معلمات قالب مختلفة، مثل:

template class BE {
  template friend class BT;
};

يشير هذا الإعلان إلى أن أي فئة BT، بغض النظر عن وسيطات القالب الخاصة بها، هي صديقة لجميع فئات BE ذات وسيطات القالب المطابقة.

ضع في اعتبارك الأمثلة التالية لمزيد من توضيح الأنواع المختلفة علاقات الأصدقاء:

template
struct foo {
  template
  friend class bar;
};

في هذه الحالة، يعد bar صديقًا لـ foo بغض النظر عن وسيطات قالب bar. أي تخصص في البار سيكون صديقًا لأي تخصص في foo.

template
struct foo {
  friend class bar;
};

هنا، يكون bar صديقًا لـ foo فقط إذا كانت وسيطة القالب الخاصة به تتطابق مع foo's. لذلك، فقط bar سيكون صديقًا لـ foo.

في السيناريو الخاص بك، فئة الصديق bar; يجب أن يكون كافيًا لأنه يسمح لأي تخصص للشريط بالوصول إلى أعضاء BE الخاصين طالما أن وسيطة القالب الخاصة به تتطابق مع فئة BE المقابلة.

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

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

Copyright© 2022 湘ICP备2022001581号-3