एक नौसिखिया सवाल: मैं कुछ आभासी कार्यों के साथ वर्गों के एक पदानुक्रम है और मैं एक कारखाने विधि लागू करने के लिए कोशिश कर रहा हूँ, लेकिन मुझे यकीन है कि सबसे अच्छा तरीका है क्या नहीं कर रहा हूँ:सी ++ में फैक्ट्री विधि को लागू करने का पसंदीदा तरीका क्या है?
- वापसी कारखाने से एक कच्चे सूचक विधि और इसे कॉलिंग विधि में एक स्मार्ट सूचक में लपेटें
- फैक्टरी
- फैक्टरी से एक उचित वस्तु वापस लौटें (लेकिन क्या यह व्युत्पन्न कक्षा को सही ढंग से कॉपी करने जा रहा है?) और इसे असाइन करें कॉलिंग विधि में स्थानीय ऑब्जेक्ट
- फैक्ट्री से एक संदर्भ लौटाएं (लेकिन कैसे बनाएं मेमोरी लीक के बिना फैक्ट्री विधि में ऑब्जेक्ट?)
मैं फैक्ट्री विधि और एक न्यूनतम क्लाइंट के उदाहरण के लिए आभारी हूं, जो प्रभावी है और स्मृति को रिसाव नहीं करता है।
मेरी पृष्ठभूमि सी # और जावा है, इसलिए मैं सी ++ एटीएम में मेमोरी प्रबंधन के साथ थोड़ा सा खो गया हूं।
लगातार 'boost :: shared_ptr' लौटने से वास्तव में एक अच्छा विचार होता है। और यह इतना दर्द नहीं है (कच्चे पॉइंटर्स से कम से कम दर्द)। चूंकि अधिकांश बहुलक पदानुक्रम गैर-प्रतिलिपि वस्तुओं से बना होते हैं (यानी जो 'क्लोन' विधि प्रदान नहीं करते हैं), साझा अर्थशास्त्र अक्सर आप जो चाहते हैं। यद्यपि चक्रीय निर्भरता से सावधान रहें। –
@Alexandre: मेरे अनुभव में, चक्रीय निर्भरता वास्तव में, वास्तव में दुर्लभ हैं। कम से कम जब आप घटनाओं/संकेतों का उपयोग नहीं कर रहे हैं। और वहां कमजोर संदर्भ (यानी सामान्य पॉइंटर्स) लगातार सबसे अच्छा समाधान हो सकता है। पता नहीं। कभी भी ई + ईमानदार होने के लिए सी ++ में ऐसा नहीं किया। –
निश्चित रूप से, वे दुर्लभ हैं। लेकिन जब वे लात मारते हैं, तो आप परेशानी में हैं। कमजोर पॉइंटर्स इसे ठीक करने के लिए माना जाता है, लेकिन आप कभी भी कमजोर डिजाइन करने के लिए चक्रीय संदर्भों की उपस्थिति में कभी नहीं जानते हैं। तो यह एक संभावित प्रमुख मुद्दा है। –