मैं अपनी खुद की कक्षा वस्तुओं को बढ़ावा से ptr_map में कैसे डाल सकता हूं। ऑब्जेक्ट्स टेम्पलेट किए गए हैं इसलिए मैं मानचित्र में कुछ स्थिर टाइपनाम का उपयोग नहीं कर सकता। तो मैंने किया:किसी भी उपयोग को बढ़ावा दें
ptr_map<string, any> someMap;
मेरी कक्षा बढ़ावा :: noncopyable इनहेरिट करती है।
someMap.insert("Test", new MyClass<SomeTemplate>());
त्रुटि है: त्रुटि: no matching function for call to ‘boost::ptr_map
।
युपीडी: मैं कुछ आवरण बनाने के लिए पसंद करते हैं और बढ़ावा :: किसी भी उपयोग नहीं करते। तो:
class IWrapper { };
class MyClass : public IWrapper { };
ptr_map<string, IWrapper> someMap;
someMap.insert("Test", new MyClass<SomeTemplate>());
ऐसा क्यों है (एक ही त्रुटि) काम नहीं करेगा? मैं विरासत वर्ग को पैरेंट इंटरफ़ेस में पास कर सकता हूं। क्या गलत है?
मेरे क्लास templated है। मैंने नमूना अपडेट किया है। मैं इसके लिए कुछ आधार नहीं बना सकता (टेम्पलेट के बिना)। – Ockonal
ठीक है, धन्यवाद। किसी के साथ जिस तरह से काम करना चाहिए। लेकिन क्या आप कोड के नए अपडेट को देख सकते हैं? मैंने आपके पहले विचार को समझने की कोशिश की। – Ockonal