मैं अपने बेस क्लास में संरक्षित फ़ंक्शन को कॉल नहीं कर सकता। क्यूं कर? यह इस तरह दिखता है:बेस क्लास संरक्षित कार्यों को कॉल नहीं कर सकता है?
class B : B2
{
public:
virtual f1(B*)=0;
protected:
virtual f2(B*) { codehere(); }
}
class D : public B
{
public:
virtual f1(B*b) { return f2(b); }
protected:
virtual f2(B*b) { return b->f2(this); }
}
MSVC में मैं त्रुटि त्रुटि C2248 मिलती है: 'नाम :: वर्ग :: f2': संरक्षित सदस्य वर्ग 'नाम :: वर्ग'
में घोषित उपयोग नहीं कर सकते जीसीसी मुझे त्रुटि मिलती है: 'आभासी int name :: class :: f2()' संरक्षित है।
वह क्यों है? मैंने सोचा कि संरक्षित सदस्यों का बिंदु कॉल करने के लिए व्युत्पन्न कक्षाओं के लिए है।
कम से कम कोड जोड़ें जो त्रुटियों को संकलित और उत्पन्न करेगा जो आप हमें ठीक करना चाहते हैं। उपरोक्त कोड में कई अन्य वाक्यविन्यास त्रुटियां हैं जो आपकी समस्या को हल करने से परेशान हो जाती हैं। –
मैं मार्टिन से सहमत हूं। यदि आप चाहते हैं कि हम आपकी मदद करें, तो अपना कोड सी ++ (वापसी प्रकार, अर्धविराम और अन्य सामान को छोड़कर) में कुछ समय निवेश करें –