تعزيز خطاف القائمة المتطفلة
-
26-09-2019 - |
سؤال
ما هو الفرق في الخطاف الأساسي وخطاف العضو في مكتبة Boost :: Interpary ومتى يكون من الأفضل استخدامه ثم الآخر؟
لقد قرأت وثائق التعزيز ، لكنها ليست كذلك.
المحلول
بقدر ما أستطيع أن أقول أنها مسألة أسلوب وتصميم موجه نحو الكائن. تتطفل الخطافات الأساسية على التسلسل الهرمي للميراث ، مما يستلزم وجود إضافي public
فئة الوالدين وربما إجبار الميراث المتعدد على التصميم. يتيح استخدام السنانير الأعضاء للمبرمج معاملة كائن على أنه يحتوي على ملف has-a
العلاقة مع حاوية ، بدلاً من is-a
العلاقة مع عضوية الحاوية.
نصائح أخرى
IMHO إذا كان من المفترض أن يتم تضمين كائنك في حاوية واحدة فقط ، فإن الخطاف الأساسي يبدو أكثر كونفًا. خلاف ذلك (بالنسبة للحاويات المتعددة) ، توفر خطافات الأعضاء المتعددة حلًا أقل غموضًا (حيث يتم تجنب الميراث المتعدد)
http://www.boost.org/doc/libs/1_47_0/doc/html/intrusion/recursive.html"السنانير الأعضاء ليست مناسبة للهياكل العودية"