मान लीजिए मुझे विरासत से भरा सी ++ लाइब्रेरी दी गई है। मुझे एक समारोह में Base*
दिया गया है जब मुझे पता है कि यह वास्तव में Derived
ऑब्जेक्ट और Derived
को Base
विरासत में इंगित कर रहा है। लेकिन मुझे नहीं पता कि यह किस प्रकार की विरासत है (सार्वजनिक/संरक्षित/निजी)। मुझे यह भी नहीं पता कि पदानुक्रम में कोई वर्चुअल फ़ंक्शन है या नहीं।static_cast बनाम गतिशील_कास्ट
स्रोत कोड/प्रलेखन Base
और Derived
की, जो डाली का उपयोग करना चाहिए की जांच कर रहे बिना इस स्थिति, को देखते हुए? या क्या मुझे बहुरूपता के बारे में सुनिश्चित करने के लिए पहले कोड/दस्तावेज़ीकरण से परामर्श लेना चाहिए?
पृष्ठभूमि
मैं क्यूटी 4.7 में QMainWindow
की changeEvent
समारोह लिख रहा हूँ। changeEvent
फ़ंक्शन QEvent*
लेता है जिसे मैं QEvent::type()
जानकर अन्य प्रकार में डाल सकता हूं। मैं सोच रहा था कि मुझे static_cast
या dynamic_cast
का उपयोग करना चाहिए।
धन्यवाद।
यदि आपके द्वारा उपयोग की जाने वाली कोई भी लाइब्रेरी 'संरक्षित' विरासत का उपयोग करती है, तो यह एक बेहतर लिखित लाइब्रेरी खोजने का समय है। –
यह प्रश्न मदद कर सकता है: http://stackoverflow.com/questions/28002/regular-cast-vs-static-cast-vs- गतिशील-cast –
@Zac: इच्छा है कि मैं टिप्पणियों को कम कर सकता हूं। यदि आप नहीं जानते कि लाइब्रेरी क्या करती है तो आप संभवतया कैसे निर्णय ले सकते हैं कि सुरक्षित विरासत नौकरी के लिए सही उपकरण है या नहीं? – Puppy