operator== with double dispatch in C++ -
एक को कैसे कार्यान्वित करना चाहिए
ऑपरेटर == (कॉन्स्ट बेस एंड बेस)
उप वर्गों की तुलना सेंट कॉल को ठीक से प्रेषित किया जाता है जब इसे
बेस * बेस 1 = नया Derived1 () कहा जाता है; बेस * बेस 2 = नया Derived2 (); base1- & gt; ऑपरेटर == (* base2)?
- ऑपरेटर == को एक निशुल्क खड़े कार्य के रूप में लागू करें।
- इसे किसी एक आर्गुमेंट पर आभासी तरीके से कॉल करें (उदाहरण के लिए ईएसईक्वॉल ())
यह आपको उस बिंदु पर ले जाता है जहां आपके पास है
Derived1 :: IsEqual (const बेस और आधार)
कॉल किया गया। यहां से आपके पास कुछ विकल्प हैं
- गतिशील_कास्ट के लिए आरटीटीआई का उपयोग करें & lt;> आधार के लिए Derived1
-
यदि व्युत्पन्न की संख्या छोटा और परिमित है, तो आप
वर्चुअल बूल बेस :: ईसएक्वेल टूडर्ड (कॉन्स्ट डेरिवेट 1 एंड डी) {रिटर्न फॉटी}; आभासी बाउल बेस :: IsEqualToDerived (const derived2 & amp; डी) {वापसी झूठी}; आभासी विधियों के रूप में
Derived1 में, आप वास्तविक के लिए ओवरराइड और तुलना करते हैं।
Comments
Post a Comment