निम्नलिखित सी ++ प्रोग्राम के बारे में:व्युत्पन्न और बेस कक्षाओं के बीच पॉइंटर-टू-पॉइंटर का रूपांतरण?
error: invalid conversion from ‘Child**’ to ‘Base**’
मेरा प्रश्न दो भागों में है:
class Base { };
class Child : public Base { };
int main()
{
// Normal: using child as base is allowed
Child *c = new Child();
Base *b = c;
// Double pointers: apparently can't use Child** as Base**
Child **cc = &c;
Base **bb = cc;
return 0;
}
जीसीसी पिछले काम विवरण में निम्न त्रुटि पैदा करता
- वहाँ क्यों है कोई चाइल्ड ** से बेस ** तक अंतर्निहित रूपांतरण?
- मैं इस उदाहरण को सी-स्टाइल कास्ट या
reinterpret_cast
के साथ काम कर सकता हूं। इन जानवरों का उपयोग करना मतलब है कि सभी प्रकार की सुरक्षा को फेंकना। क्या इन बिंदुओं को अंतर्निहित रूप से डालने के लिए कक्षा परिभाषाओं में कुछ भी जोड़ा जा सकता है, या कम से कम वाक्यांश को इस तरह से बदलना है जिससे मुझेstatic_cast
का उपयोग करने की अनुमति मिलती है?
कई प्रोग्रामिंग भाषाओं में इस प्रश्न पर बदलाव SO पर सबसे आम प्रश्नों में से एक है। लेकिन हर कोई एक ही भाषा के लिए थोड़ा अलग तरीके से वाक्यांश करता है, इसलिए डुप्लिकेट ढूंढना मुश्किल हो सकता है। –
छायादार जानवरों से बचने के लिए इस उदाहरण को "फिक्सिंग" इस बात पर निर्भर करेगा कि आप पहले स्थान पर पॉइंटर-टू-पॉइंटर का उपयोग क्यों कर रहे हैं। – aschepler