类可以在C ++运行时添加朋友类吗?

时间:2018-11-01 21:40:23

标签: c++ dynamic runtime friend objective-c-category

我想让某些类在运行时成为其他类的朋友。有办法吗?

或者,是否有一种方法可以在运行时访问对象的公共/受保护/私有ivar-或扩展类似于Objective-C的类别功能的类?

这里的用例是,我希望能够在运行时为测试套件提供对类中的ivars的访问权限-而不用特定于测试套件的代码污染应用程序代码。测试框架可能会更改,并且会根据部署平台而有所不同。

摘要:找到一种方法来保持应用程序代码的清洁和不受外部框架工件的影响。

1 个答案:

答案 0 :(得分:4)

  

我想让某些类在运行时成为其他类的朋友。有办法吗?

没有,这对于c ++来说是不可能的。

  

或者,有一种方法可以在运行时访问对象的公共/受保护/私有ivar

也没有在运行时更改类成员可见性的概念。

访问修饰符是纯粹的编译时概念,无法在运行时进行更改。


为您解决特定用例的一种方法可能是使用接口,正如我在此处概述的那样: