如何通过其偏移量访问私有数据私有成员?

Nic*_*las 2 c++ visual-studio

我正在尝试按偏移量访问和修改类的私有数据成员。
AFAIK,首先是计算偏移量,然后通过偏移量访问成员。
这是我的代码。

class Test {  
public:
    int a;  
    int b;
private:  
    int c;
};  
Test test;
cout << *(&test + &Test::b + 1);  // access c
Run Code Online (Sandbox Code Playgroud)

我收到错误:“+”运算符无效,正确的操作数包含“ int Test::*”类型。

一个类似的帖子,它是asprintf的偏移量,但是当尝试这样时: ab1,4

cout << &Test::a << '\t' << &Test::b;  
Run Code Online (Sandbox Code Playgroud)

我有1 1

我的问题:
1.为什么cout得到错误的结果?2.指向
什么? 3. 如何访问和修改Test::*指针?(或者在不知道偏移量的情况下如何访问私有成员?)Test::*p

Otá*_*cio 5

如果你必须这样做,这个#define private public技巧应该可以做到。