struct B {};
struct D : private B {
B* fun() { return new D; } // ok
}
struct DD : public D {
B* foo() { return 0; } // error: ‘struct B B::B’ is inaccessible !
};
यह त्रुटि मेरे लिए अनुचित लगती है। यदि हम वैश्विक दायरे में सरल B*
का उपयोग कर सकते हैं तो क्यों इसकी निजी रूप से व्युत्पन्न कक्षाओं में नहीं? g++ demo।बाद में निजी रूप से व्युत्पन्न कक्षाओं में बेस पॉइंटर/संदर्भ का एक साधारण उल्लेख क्यों प्रतिबंधित है?
हम B*
, जो भाषा के नियमों (this, this, this से संबंधित हैं प्रश्न) द्वारा निषिद्ध है के लिए DD*
कन्वर्ट करने के लिए कोशिश कर रहा है नहीं कर रहे हैं।
ध्यान दें कि, यदि मैं B* foo()
से int foo()
बदलता हूं, तो चीजें ठीक हो जाती हैं।
एमएसवीसी 10.0 एक ही त्रुटि के साथ शिकायत करता है। – Yuushi
@Yuushi, क्या एमएसवीसी [पब्बी के उत्तर] (http://stackoverflow.com/a/13927212/514235) के साथ त्रुटि को हल करता है?सिर्फ यह जानना चाहता था कि यह 'बग' को ठीक करने का मानक तरीका है या नहीं। – iammilind
हां, यह ':: बी *' के साथ संकलित करता है। – Yuushi