तरह से मैं एक अंतरफलक वर्ग के लिए इसी तरह की है:बेस्ट एक सी का उपयोग करने के ++ इंटरफ़ेस
class IInterface
{
public:
virtual ~IInterface() {}
virtual methodA() = 0;
virtual methodB() = 0;
};
मैं तो इंटरफ़ेस को लागू:
class AImplementation : public IInterface
{
// etc... implementation here
}
जब मैं एक आवेदन पत्र में इंटरफ़ेस का उपयोग यह है करने के लिए बेहतर कंक्रीट क्लास एमिमेंटेशन का एक उदाहरण बनाएं। उदाहरण के लिए।
class IInterface
{
public:
virtual ~IInterface() {}
static std::tr1::shared_ptr<IInterface> create(); // implementation in .cpp
virtual methodA() = 0;
virtual methodB() = 0;
};
तो मैं तो जैसे मुख्य में इंटरफेस का उपयोग करने में सक्षम हो जाएगा:
int main()
{
AImplementation* ai = new AIImplementation();
}
या यह बेहतर तरह निम्नलिखित इंटरफ़ेस में सदस्य समारोह "बनाने के" एक कारखाने लगाने के लिए है
int main()
{
std::tr1::shared_ptr<IInterface> test(IInterface::create());
}
पहला विकल्प सामान्य प्रथा प्रतीत होता है (इसका अधिकार नहीं कहना)। हालांकि, दूसरा विकल्प "प्रभावी सी ++" से प्राप्त किया गया था।
भाषा की शुद्धता के लिए बस कुछ नोट: सी ++ में कोई तरीका नहीं है, सदस्य कार्य हैं। – Artyom
मैं इस तरह मुख्य() लिखूंगा: 'int मुख्य() { IInterface * i = नया एमिलीमेंटेशन(); } ' –