c++ - सी++ विरासत-पहुंच योग्य आधार?




inheritance (2)

मैं एक बेस पैरामीटर को फ़ंक्शन पैरामीटर के रूप में उपयोग करने में असमर्थ प्रतीत होता हूं, क्या मैंने अपनी विरासत को गड़बड़ कर दिया है?

मेरे मुख्य में निम्नलिखित है:

int some_ftn(Foo *f) { /* some code */ };
Bar b;
some_ftn(&b);

और कक्षा बार को इस तरह से फू से विरासत में मिला:

class Bar : Foo
{
public:
    Bar();
    //snip

private:
    //snip
};

क्या यह काम नहीं करना चाहिए? मैं अपने मुख्य समारोह में उस कॉल को करने में सक्षम नहीं प्रतीत होता


डिफ़ॉल्ट रूप से, विरासत निजी है। आपको स्पष्ट रूप से public उपयोग करना होगा:

class Bar : public Foo


तुम्हें यह करना ही है:

class Bar : public Foo
{
    // ...
}

सी ++ में class का डिफ़ॉल्ट विरासत प्रकार private , इसलिए बेस क्लास के किसी भी public और protected सदस्य private तक सीमित हैं। दूसरी तरफ struct विरासत डिफ़ॉल्ट रूप से public है।





inheritance