class Base
{
public:
void operator()() { func(); }
private:
virtual void func() {}
};
class Derived1 : public Base
{
private:
void func() override {/*do something*/}
};
class Derived2 : public Base
{
private:
void func() override {/*do something else*/}
};
साथ प्रारंभ क्योंकि मैं ऑपरेटर ओवरलोडिंग उपयोग करना चाहते हैं,
संदर्भ सूचक की तुलना में एक बेहतर विकल्प है।सी ++ आधार वर्ग संदर्भ अलग व्युत्पन्न वर्ग वस्तु
मैं क्या करने का इरादा की तरह है:
if (condition) {
Base& obj = Derived1();
} else {
Base& obj = Derived2();
}
लेकिन obj को नष्ट कर दिया और गुंजाइश के अंत हो जाएगा।
Base& obj;
if (condition) {
obj = Derived1();
} else {
obj = Derived2();
}
या तो काम नहीं करेगा,
क्योंकि संदर्भ घोषणा पर प्रारंभ करने की आवश्यकता है।
अगर मैं कोशिश:
Base& obj = condition ?
Derived1() : Derived2();
फिर भी एक त्रुटि, त्रिगुट ऑपरेटर परिवर्तनीय प्रकार की उम्मीद क्योंकि।
इस समस्या से निपटने के लिए सबसे अच्छा समाधान क्या है?
सूचक उपयोग करने का अर्थ मैं> ऑपरेटर() obj- उपयोग करने के लिए, और ऑपरेटर ओवरलोडिंग के प्राकृतिक वाक्य रचना खो दिया है। – gnephiak
मेरा अद्यतन उत्तर देखें, आपको 'कॉल करना नहीं है -> और यह – billz
ऑपरेटर ओवरलोडिंग खो देता है हालांकि यह सूचक का उपयोग करता है, फिर भी मेरी आवश्यकता के लिए सबसे अच्छा जवाब है। – gnephiak