operator== with double dispatch in C++ -


एक को कैसे कार्यान्वित करना चाहिए

  ऑपरेटर == (कॉन्स्ट बेस एंड बेस)  

उप वर्गों की तुलना सेंट कॉल को ठीक से प्रेषित किया जाता है जब इसे

  बेस * बेस 1 = नया Derived1 () कहा जाता है; बेस * बेस 2 = नया Derived2 (); base1- & gt; ऑपरेटर == (* base2)?  

  1. ऑपरेटर == को एक निशुल्क खड़े कार्य के रूप में लागू करें।
  2. इसे किसी एक आर्गुमेंट पर आभासी तरीके से कॉल करें (उदाहरण के लिए ईएसईक्वॉल ())

यह आपको उस बिंदु पर ले जाता है जहां आपके पास है

  Derived1 :: IsEqual (const बेस और आधार)  

कॉल किया गया। यहां से आपके पास कुछ विकल्प हैं

  1. गतिशील_कास्ट के लिए आरटीटीआई का उपयोग करें & lt;> आधार के लिए Derived1
  2. यदि व्युत्पन्न की संख्या छोटा और परिमित है, तो आप

      वर्चुअल बूल बेस :: ईसएक्वेल टूडर्ड (कॉन्स्ट डेरिवेट 1 एंड डी) {रिटर्न फॉटी}; आभासी बाउल बेस :: IsEqualToDerived (const derived2 & amp; डी) {वापसी झूठी}; आभासी विधियों के रूप में  

Derived1 में, आप वास्तविक के लिए ओवरराइड और तुलना करते हैं।


Comments

Popular posts from this blog

wpf - Line breaks and indenting for the XAML of a saved FlowDocument? -

gtk - Python Window Resize -

c# - read full xml file data over tcp -