मैं स्थानीय वर्ग के रूप में कुछ फ़ंक्शन (विधि) के भीतर इंटरफ़ेस को लागू करने पर विचार कर रहा हूं।एक स्थानीय वर्ग के रूप में सार वर्ग लागू करें? कुछ कारणों से पेशेवरों और विपक्ष
निम्नलिखित पर विचार करें:
class A{
public:
virtual void MethodToOverride() = 0;
};
A * GetPtrToAImplementation(){
class B : public A {
public:
B(){}
~B(){}
void MethodToOverride() {
//do something
}
};
return static_cast<A *>(new B());
}
int _tmain(int argc, _TCHAR* argv[])
{
A * aInst = GetPtrToAImplementation();
aInst->MethodToOverride();
delete aInst;
return 0;
}
कारण मैं यह कर रहा हूँ कर रहे हैं:
- मैं अलग फ़ाइलों
- MethodToOverride सिर्फ प्रतिनिधियों फोन में वर्ग (बी) को लागू करने के आलसी हूँ अन्य कक्षा
- कक्षा बी अन्य उपयोगकर्ताओं को दिखाई नहीं देनी चाहिए
- अब चिंता करने की कोई आवश्यकता नहीं है एआईएनटी को हटाने से पहले स्मार्ट पॉइंटर्स का उपयोग वास्तविक कार्यान्वयन में किया जाता है
तो मेरा सवाल यह है कि अगर मैं यह सही कर रहा हूं?
अग्रिम धन्यवाद!
आप 'ए' के लिए कार्यान्वयन फ़ाइल में' बी 'पूरी तरह से (गैर-स्थानीय) को परिभाषित क्यों नहीं कर सकते? –
बस एक नाइटपिक है, लेकिन ए में आभासी विनाशक होना चाहिए – jpalecek
ए केवल एक इंटरफेस है - एक हेडर फ़ाइल में घोषित किया गया है। साथ ही, बी अनुवाद इकाई के बाहर दिखाई नहीं दे सकता है जहां GetPtrToAIplementation परिभाषित किया गया है। – sinek