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成为朋友的类,除了最初暴露的内容之外,你不会暴露任何其他东西. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |