यहाँ कोड का एक नमूना है कि मुझे गुस्सा दिलाती है:व्युत्पन्न कक्षा से बेस क्लास में संरक्षित विधि का उपयोग कैसे करें?
class Base {
protected:
virtual void foo() = 0;
};
class Derived : public Base {
private:
Base *b; /* Initialized by constructor, not shown here
Intended to store a pointer on an instance of any derived class of Base */
protected:
virtual void foo() { /* Some implementation */ };
virtual void foo2() {
this->b->foo(); /* Compilator sets an error: 'virtual void Base::foo() is protected' */
}
};
कैसे आप संरक्षित overrided कार्य करने के लिए उपयोग करते हैं?
आपकी मदद के लिए धन्यवाद। : ओ)
मुझे नहीं लगता कि आपका कार्यान्वयन काफी सही है। सदस्य चर के रूप में आपके पास बेस का उदाहरण क्यों है? यह-> बी-> foo() शुद्ध वर्चुअल विधि को कॉल करने का प्रयास करेगा। – GWW
इस कार्यक्रम को संकलित नहीं करना चाहिए। आप एक अमूर्त वर्ग को तत्काल नहीं कर सकते .... जब तक 'बी' 'बेस' से व्युत्पन्न किसी अन्य वर्ग के उदाहरण को इंगित नहीं कर रहा है। – 341008
मैंने परिशुद्धता छोड़ी: व्युत्पन्न :: बी विशेषता का उद्देश्य बेस –