C:有没有办法限制某些类访问某些类而不暴露其他私有成员?
作者:互联网
我有一个带有受保护方法Zig :: punt()的类,我只希望它可以被“Avocado”类访问.在C中,您通常使用“朋友鳄梨”说明符来执行此操作,但这将导致“Avocado”类可以访问所有其他变量;我不希望这样,因为这打破了封装.
是我想要的不可能,还是已经存在一个不起眼的技巧,我可以用来实现我想要的东西?或者可能会实现相同的替代类设计模式?
提前感谢任何想法!
解决方法:
这是一个丑陋却又有效的伎俩:
class AvocadoFriender {
protected:
virtual void punt() = 0;
friend class Avocado;
}
class Zig : public AvocadoFriender {
...
protected:
void punt();
}
基本上,您添加了一个mixin类,它只公开您想要Avocado的接口部分.我们利用这样一个事实:通过继承一个与Avocado成为朋友的类,除了最初暴露的内容之外,你不会暴露任何其他东西.
标签:c,methods,limit,access-modifiers 来源: https://codeday.me/bug/20190730/1582412.html