关于dynamic:一个类可以在运行时在C ++中添加好友类吗?

Can a class add friend classes at runtime in C++?

我想让一些类在运行时成为其他类的朋友。 有没有办法做到这一点?

或者,有没有办法在运行时访问对象的public / protected / private ivars - 或者扩展类似于Objective-C类别功能的类?

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

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


I'd like to make some classes become friends of other classes at runtime. Is there a way to do this?

不,用c ++是不可能的。

Alternatively, is there a way to access an object's public/protected/private ivars at runtime

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

访问修饰符是纯编译时概念,没有办法在运行时更改它。

为您特定的用例克服这种情况的方法可能是使用接口,因为我在这里草绘:

  • 如何删除/重构?朋友? 依赖声明适当吗?