相关疑难解决方法(0)

我可以在不使用朋友的情况下从课外访问私人会员吗?

放弃

是的,我完全清楚我所询问的内容是完全愚蠢的,任何想要在生产代码中尝试这样的事情的人都应该被解雇和/或开枪.我主要是想看看是否可以做到.

现在已经不在了,有没有办法从类外部访问C++中的私有类成员?例如,有没有办法用指针偏移来做到这一点?

(天真和其他非生产准备技术欢迎)

更新

正如评论中所指出的,我问了这个问题,因为我想写一篇关于过度封装的博客文章(以及它如何影响TDD).我想看看是否有办法说"使用私有变量不是100%可靠的方法来强制封装,即使在C++中也是如此." 最后,我决定更多地关注如何解决问题,而不是为什么这是一个问题,所以我没有像我原先计划的那样突出显示这里提到的一些东西,但我还是留下了一个链接.

无论如何,如果有人对它的出现感兴趣,那么它就是: 测试驱动开发的敌人第一部分:封装(我建议在你决定我疯了之前阅读它).

c++ encapsulation private-members

64
推荐指数
8
解决办法
6万
查看次数

在C++中调用私有方法

这纯粹是一个理论问题,我知道如果有人声明私有方法,你可能不应该调用它.我设法调用私有虚方法并更改实例的私有成员,但我无法弄清楚如何调用私有非虚方法(不使用__asm).有没有办法获得指向该方法的指针?有没有其他方法可以做到这一点?

编辑:我不想改变类定义!我只想要一个黑客/解决方法.:)

c++

17
推荐指数
3
解决办法
3万
查看次数

访问私人会员

通过将类转换为void指针然后转换为结构来访问类的私有成员是否合适?

我认为我没有权限修改包含我需要访问的数据成员的类.如果不符合道德规范,我不想以间接方式冒险访问数据成员.

编辑:不得不进一步编辑...我很确定这个类不会被修改,所以它可以在那个程度上...我唯一关心的是,如果编写该类的人知道这一点,它可能跟他没关系:(.

c++ private-members

8
推荐指数
6
解决办法
5045
查看次数

访问c ++父类的私有成员

我有一个基本的C++问题,不幸让我感到困惑.最近我遇到了一篇文章,该文章使用向下转换来使用向下转换来访问类的私有成员.我的问题是它为什么有效?

鉴于我有一个父类P,其私有成员m_p的类型为dummy*,那么使用的方法是创建一个hack类hackP,如下所示:

class hackP: public P {
public:
dummy *m_p;
};
Run Code Online (Sandbox Code Playgroud)

显然,使用像这样的代码片段可以访问class P私有成员m_p

P parent = ...;
hackP *hp = (hackP*)&parent;
// access parent m_p as hp->m_p
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

c++ private class member undefined-behavior

4
推荐指数
1
解决办法
631
查看次数