मेरे पास दो वैश्विक हैं, दो वैश्विक friend oparator<<
एस के साथ।ग्लोबल ऑपरेटर और पॉलिमॉर्फिज्म
class A {
friend std::ostream& operator<<(std::ostream& o, const A &a);
};
class B: public A {
friend std::ostream& operator<<(std::ostream& o, const B &b);
};
तो मैं इस तरह उपयोग, सब कुछ ठीक काम कर रहा है, ऑपरेटर की B
संस्करण कहा जाता हो जाता है:
B b;
std::cout << b;
लेकिन अगर मैं पोलिमोर्फ़िज्म उपयोग करते हैं, A
संस्करण कहा जाता हो जाता है, हालांकि गतिशील प्रकार B
है:
A* b = new B();
std::cout << *b;
एक समाधान कास्टिंग है:
std::cout << static_cast<B&>(*b);
लेकिन क्या इसके लिए कोई आसान या अधिक सुरुचिपूर्ण समाधान है?
'ऑपरेटर << (std :: ostream &, a const &) 'में वर्चुअल फ़ंक्शन का आविष्कार करने के बारे में क्या? – dyp