gpt4 book ai didi

c++ - 你如何让基类中的私有(private)成员成为子类中的公共(public)成员?

转载 作者:搜寻专家 更新时间:2023-10-31 00:23:04 25 4
gpt4 key购买 nike

考虑以下代码:


class Base
{
void f() { }
};

class Derived: public Base
{
public:

};

您可以在派生类中更改什么,以便您可以执行以下操作:


Derived d;
d.f();

如果该成员在基类中声明为公共(public)成员,则在派生类公共(public)部分中为 Base::f 添加一个 using 声明将解决该问题。但是如果在基类中声明为private,这似乎行不通。

最佳答案

这是不可能的。 using 声明不能命名私有(private)基类成员。即使有其他同名的非私有(private)重载函数也不行。

唯一的方法可能是使派生类成为友元:

class Derived;

class Base
{
void f() { }
friend class Derived;
};

class Derived: public Base
{
public:
using Base::f;
};

既然你在派生类中公开了名称,那么 Derived 的派生类将能够访问它们,你可以在基类中将它们设为 protected也省略了 friend 声明。

关于c++ - 你如何让基类中的私有(private)成员成为子类中的公共(public)成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2533353/

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