#include<iostream> using namespace std; class Base { public: void fun()const{cout<<"fun";} void fun2()const{cout<<"fun2";} void fun3()const{cout<<"fun3";} }; class Der:protected Base { public: void fun4()const{cout<<"fun4";} }; int main() { Der obj; obj.fun(); obj.fun2(); obj.fun3(); obj.fun4(); }为什么有错误
时间: 2024-04-02 12:33:58 浏览: 15
在上面的代码中,将Base类中的fun()、fun2()、fun3()函数的访问权限都设置为public,表示这些成员函数可以被所有的类和对象访问。
但是在派生类Der中,将Base类的继承方式设置为protected,表示派生类Der可以访问Base类的保护成员。因此,在主函数中,通过Der类的对象obj来访问Base类的成员函数是无法实现的。
如果将Der类中Base类的继承方式改为public,程序就可以正常运行了。因此,将Der类中Base类的继承方式改为public即可解决这个问题。
相关推荐
![text/plain](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)