मैं आधार वर्ग एक है, वर्ग बी ए से विरासत, वर्ग सी जो एक टेम्पलेट वर्ग है ए वर्ग डी से विरासत सी से विरासत संबंध इस प्रकार है:टेम्पलेट वर्ग के साथ सी ++ गतिशील कलाकारों के बारे में
A
/\
B C (template class)
\
D
मैं डी ऑब्जेक्ट डी 1 का उपयोग कर एक ऑब्जेक्ट ओ 1 बना सकता हूं, तो मैं डायनामिक कास्ट ओ 1 को एक प्रकार सी ऑब्जेक्ट सी 1 में बनाना चाहता हूं। लेकिन मुझे लगता है कि यह विफल रहता है। मेरा सवाल यह है कि यह प्रक्रिया क्यों विफल हो जाती है?
फिर मैं डी ऑब्जेक्ट डी 1 से सी प्रकार ऑब्जेक्ट सी 2 बनाने के लिए static_cast का उपयोग करता हूं, और मैंने जांच की है कि सी 2 का सही मूल्य डी 2 से है। क्या static_cast का उपयोग करके डी प्रकार से सी प्रकार में परिवर्तित करना हमेशा सफल होता है?
धन्यवाद !!!
अपेक्षित और वास्तविक परिणामों के साथ, पूर्ण कोड पोस्ट करें। ऐसी अनगिनत चीजें हैं जो गलत हो सकती हैं, और हम यह नहीं बता सकते कि यह विशिष्ट कोड के बिना कौन सा है। – Mankarse
क्या आपके बेस क्लास में कोई वर्चुअल फ़ंक्शन है? यदि नहीं, तो आप 'dynamic_cast' का उपयोग नहीं कर सकते हैं। – GManNickG
ध्यान रखें कि इनमें से अधिकतर रूपांतरण केवल पॉइंटर्स और संदर्भों के लिए मान्य हैं, न कि ऑब्जेक्ट्स के लिए। यह आपके वर्णन से स्पष्ट नहीं है कि आप क्या बदल रहे हैं; कुछ उदाहरण कोड उपयोगी होगा। –