作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
假设我有一个抽象类
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/
我是一名优秀的程序员,十分优秀!