我想访问类中的私有数据成员。类中没有成员函数来访问私有数据成员。这是私人的。
我想上这门课,想知道如何打开它。一种方法是复制类的声明,将私有成员设为公共,然后将新类称为 some_else。然后我重新解释转换并复制原始对象。这有效。但我想要一些更优雅的东西……或者也许是通用的……或者只是另一种方式。
有哪些选择?我可以使用 void* 吗?我可以将类 memcpy 到另一个空类中吗?有哪些方法可以做到这一点?
%
我假设
- 你已经经历了“打破封装是不好的”阶段,
- 用尽了其他可能的解决方案,
- 无法更改类的标头。
有几种方法可以破坏对类的私有成员的访问,如GotW #76 http://www.gotw.ca/gotw/076.htm.
- 复制类定义并添加
friend
宣言。
- 使用邪恶的宏:
#define private public
在包含类的标头之前.
- 编写具有相同二进制布局的类定义并使用
reinterpret_cast
从原来的班级切换到假班级。
- 如果有的话,专门化一个模板成员函数(唯一的可移植解决方案)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)