【发布时间】:2015-11-13 16:17:59
【问题描述】:
我有一个(大)类和该类的偏移量。 如何有效地找到在该偏移处定义的成员?
例子:
struct Dummy {
int a, b, c;
}
给定4 的偏移量并假设sizeof(int) == 4,我想得到'b'。
显然我不想在运行时这样做,所以我一直在玩nm、objdump 和 gdb 有一段时间了,但没能做到这一点。
【问题讨论】:
-
C++ 中没有反射,但您可以手动将
offesetof每个成员与您的给定值进行比较,前提是您的类是标准布局。 -
@KerrekSB:嗯,对于一个小类来说,这是可行的,但我实际上有数百个成员、STL 容器等。我希望编译器或其他工具应该能够直接转储内部结构,包括偏移量。
-
请问您为什么要这样做?
-
可以用编辑器搜索会员名吗?否则你将需要一个
std::map、变量名和成员偏移量。