gpt4 book ai didi

c++ - 如何使用 "cout"打印数据成员的地址(在类偏移量中)

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:52:41 25 4
gpt4 key购买 nike

我在下面有一个类:

class A
{
public:
double a;
float b;
double c;
};

我想在类中打印数据成员偏移量,而不是我使用的:

double A::* pm = &A::a;
cout << *(int *)&pm << endl;

它运行良好并打印“0”,但我不想使用中间变量 pm

cout << *(int *)&A::a << endl;

我遇到编译错误:无效类型转换

最佳答案

offset 假定您指的是 offset in bytes

你可以尝试这个解决方案:

(size_t) &(((A*)0)->a) // prints 0

实际上这是宏offsetof as WhozCraig 的实现建议。

 ...
cout << "A::a => " << (size_t) &(((A*)0)->a)
<< "\nA::b => " << (size_t) &(((A*)0)->b)
<< "\nA::c => " << (size_t) &(((A*)0)->c);
...

结合您的数据,将打印之前的代码片段:

A::a => 0
A::b => 8
A::c => 16

关于c++ - 如何使用 "cout"打印数据成员的地址(在类偏移量中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25782583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com