[英]Is it possible to access private members of a class?
是否可以在c ++中访问类的私有成员。
如果您没有朋友功能,并且您无权访问类定义
你的意思是使用一些指针算法来获得访问权限? 这是可能的,但绝对是危险的。 再看看这个问题: 访问私人会员
我觉得有一些像这样的旧学校伎俩:
#define private public
#include "header.h"
#define private private
但是你强烈劝阻我这样做(我已经很快就读到了C ++标准中关于这一点的说法) - 如果你想阅读更多关于谷歌的信息“#define private public”
好吧,我可能会说rubish,但我认为你可以尝试定义一个“twin”类,其中包含与要修改的类相同的成员但是使用不同的公共/私有修饰符,然后使用reintepret_cast将原始类转换为您的类可以访问私人会员。
它有点hacky ;-)
一些代码来解释这个想法:
class ClassWithNoAccess
{
public:
someMethod();
private:
int someVar;
};
class ClassTwin
{
public:
someMethod();
public:
int someVar;
}
在代码中的某个地方:
ClassWithNoAccess* noAccess = new ClassWithNoAccess();
ClassTwin* twin = reinterpret_cast<ClassTwin *>(noAccess);
twin->someVar = 1;
编辑:所以像之前已经写过的人一样,这可能会有效,但标准并不能保证变量的顺序与public和private修饰符一样
即使有可能通过一些讨厌的黑客 - 见前面的帖子 - 你也不应该这样做。
封装存在是为了一个非常好的目的,并且将类成员设置为私有意味着开发人员不打算任何人乱搞该成员。 那应该意味着
“您无需访问此成员即可将公共接口用于其完整的预期范围”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.