加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 09:27:56 所属栏目:百科 来源:网络整理
导读:我有一个带有受保护方法Zig :: punt()的类,我只希望它可以被“Avocado”类访问.在C中,您通常使用“朋友鳄梨”说明符来执行此操作,但这将导致“Avocado”类可以访问所有其他变量;我不希望这样,因为这打破了封装. 是我想要的不可能,还是已经存在一个不起眼的技
我有一个带有受保护方法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成为朋友的类,除了最初暴露的内容之外,你不会暴露任何其他东西.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读