gpt4 book ai didi

c++ - 如何将成员的 protected 继承限制为仅一代或几代?

转载 作者:太空狗 更新时间:2023-10-29 23:33:01 25 4
gpt4 key购买 nike

我的 class Dad 提供了一些 protected 方法,它的 child 将需要这些方法,即使它实际上还不知道这些 child 是谁。

class Dad
{
protected:
void method()
{
// some amazing stuff (I swear)
};
};

实际继承class Child: public Dad,在我当前的程序实现中,已经决定将自己派生成几个类class GrandKid1: ChildGrandKid2 类: child

但是,出于安全和组织的考虑,Child 不希望孙辈们自己调用 method()。我如何防止他们这样做?

显然,以下天真的代码会产生链接器错误:

class Child: public Dad
{
private:
void method();
};

如何让 Child 停止将 protected 成员 method() 传播到它自己的派生类?

最佳答案

您可以使用 using 指令将成员放入另一个部分。

class Dad
{
protected:
void Method() { std::cout << "Dad"; }
};

class Child : public Dad
{
private:
using Dad::Method;
};

class GrandChild : public Child
{
public:
void f1() { Method(); } // Generates compilation error
};

关于c++ - 如何将成员的 protected 继承限制为仅一代或几代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24753113/

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