gpt4 book ai didi

c++ - 只能在引用基类时调用的方法? C++

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

假设我有一个抽象类

class NecessaryDanger
{
public:
virtual void doSomethingDangerous() =0;
}

以及派生自此类的类:

class DoesOtherStuff : public NecessaryDanger
{
//stuff
void otherMethod();
void doSomethingDangerous();
}

有没有办法只允许访问 doSomethingDangerous() 之类的

DoesOtherStuff d;
d = DoesOtherStuff();
d.otherMethod(); //OK
d.doSomethingDangerous(); //error

NecessaryDanger* n = &d;
n->doSomethingDangerous(); //OK

我还不太擅长 C++,所以上面的代码可能不太正确,但你可能明白了。我有一组类需要有能力做“危险的事情”(以他们自己的特殊方式),如果这些类中的多个对象做这种危险的事情可能会导致问题。我想要一个管理器类,它有一个仅指向一个对象的 NecessaryDanger 指针。如果方法 doSomethingDangerous 只能由 NecessaryDanger 对象调用,那么意外调用 doSomethingDangerous 就更难发生并让我头疼。

在此先感谢您的帮助。如果这是一个愚蠢的问题,请提前道歉!

最佳答案

当然。只需在派生类中将其设为 private,在基类中将其设为 public

当然,如果NecessaryDanger 是一个公共(public)基地,那么任何人都可以施法和施法。您可能希望将其设为私有(private)基地并使用 friend

class DoesOtherStuff : private NecessaryDanger
{
//stuff
void otherMethod();

private:
void doSomethingDangerous();

friend class DangerManager;
}

关于c++ - 只能在引用基类时调用的方法? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3572310/

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