class Interface
{
};
class Class : public Interface
{
};
class Foo
{
public:
std::vector<std::shared_ptr<Interface>>& GetInterfaces()
{
return *(std::vector<std::shared_ptr<Interface>>*)(&m_data);
//return m_data;
}
private:
std::vector<std::shared_ptr<Class>> m_data;
};
यह काम करता है लेकिन बदसूरत और डरावना है की share_ptrs का एक वेक्टर के लिए एक व्युत्पन्न वर्ग की shared_ptrs का एक वेक्टर कास्ट करने के लिए। क्या ऐसा करने के लिए कोई बेहतर/सुरक्षित तरीका है? मैं नहीं चाहता कि प्रकार std::vector<std::shared_ptr<Interface>>
की m_data
बनाने के लिए क्योंकि मॉड्यूल Foo
के अंतर्गत आता है Class
की, Interface
(और Foo::GetInterfaces()
) एक अलग मॉड्यूल है कि केवल Interface
कार्यक्षमता के बारे में पता होना चाहिए के साथ बातचीत करने के लिए लागू कर रहे हैं के साथ पूरी तरह से काम करता है चाहता हूँ।कैसे एक आधार वर्ग
मुझे बताएं कि यहां कुछ भी अस्पष्ट नहीं है, यह मुझे समझ में आता है लेकिन मैं थोड़ी देर के लिए समस्या के खिलाफ अपने सिर को टक्कर लगी हूं।
क्या है साझा सूचक उस स्थिति में क्या करने जा रहा? मुझे यकीन नहीं है कि यह दो अलग-अलग प्रकार के साझा सूचक के बीच पॉइंटर्स साझा करना चाहता है! –
@MichaelKohne नहीं यह ठीक है। – 111111
आह, जीत के लिए अर्थशास्त्र चलाओ! मूल्य ठीक से वापस करना चाहिए। –