其他分享
首页 > 其他分享> > C:有没有办法限制某些类访问某些类而不暴露其他私有成员?

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