gpt4 book ai didi

c++ - 错误 : ‘father’ is an inaccessible base of ‘son’

转载 作者:行者123 更新时间:2023-11-27 22:33:51 24 4
gpt4 key购买 nike

当访问修饰符被设置为 private 或 protected 时,为什么我无法创建基类的指针并将其指向子类?

#include<iostream>
using namespace std;

class father
{
public:
int n=10;
};

class son:protected father
{
public:
son(){
cout<<n;
}
};

int main()
{
father *f;
f=new son;
}

最佳答案

类的 protected 成员可由类本身及其子类访问。类似的逻辑适用于 protected 继承。也就是说,当您拥有 protected 继承时,只有类及其子级“知道”这种继承。因此,使用您的代码(使用 protected 继承),您可以轻松地将儿子转换为儿子类中的父亲,如下所示。

class father
{
public:
int n = 10;
};
class son : protected father
{
void tmp(){father *f = new son;}
public:
son()
{
cout << n;
}
};

但是,要达到你想达到的目的,你必须使用公共(public)继承(使其他人有可能“意识到”这种继承的存在)。

#include <iostream>
using namespace std;
class father
{
public:
int n = 10;
};
class son : public father
{
public:
son()
{
cout << n;
}
};
int main()
{
father *f;
f = new son;
}

关于c++ - 错误 : ‘father’ is an inaccessible base of ‘son’ ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57400453/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com