我正在尝试按偏移量访问和修改类的私有数据成员。
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
| 归档时间: |
|
| 查看次数: |
2013 次 |
| 最近记录: |