公用派生类能访问基类中的protected成员吗?

不是可以的吗,但为什么下面这段代码会报错呢 class Basic { public: Basic(int _a):a(_a){} protected: int a; }; class Sub : public Basic { public: Sub(int _a,int _b):Basic(_a),b(_b){} void showBasic(Basic basic) { cout<<basic.a<<endl; } private: int b; }; error C2248: “Basic::a”: 无法访问 protected 成员(在“Basic”类中声明) 为什么不能访问?难道我理解错了?

protected成员只能被派生类访问。换句话说,派生类中可以访问基类的保护成员,注意,是基类保护成员,而你是要访问派生类对象的成员。请弄清楚类与对象的区别。
在Sub类中,可以访问Basic::a,但不可以访问basic.a,不知你是否明白?
温馨提示:答案为网友推荐,仅供参考
相似回答