gpt4 book ai didi

成员变量的 C++ 偏移量?

转载 作者:搜寻专家 更新时间:2023-10-30 23:50:17 26 4
gpt4 key购买 nike

我有:

class Foo {
int a;
int b;
std::string s;
char d;
};

现在,我想知道给定 Foo* 的 a、b、s、d 的偏移量

即假设我有:

Foo *foo = new Foo();
(char*) foo->b == (char*) foo + ?? ; // what expression should I put in ?

最佳答案

我不明白为什么你想要一个成员到你的 struct 的偏移量,但是偏移量允许在给定结构地址的情况下获取指向成员的指针。 (请注意,标准 offsetof 宏仅适用于 POD 结构(您的不是),因此在这里不是合适的答案。)

如果这是您想要做的,我建议使用指向成员的指针,因为这是一种更便携的技术。例如

int main()
{
int Foo::* pm = &Foo::b;

// Pointer to Foo somewhere else in the program
extern Foo* f;

int* p = &(f->*pm);
}

请注意,这仅在 b 时有效在 Foo 中不是私有(private)的, 或者您可以在 Foo 的成员函数或友元中形成指向成员的指针.

关于成员变量的 C++ 偏移量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2430954/

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