【发布时间】:2019-10-14 15:11:43
【问题描述】:
我有两个结构
struct A
{
int a, b;
};
struct B
{
A c, d;
};
我想获得指向d 内部成员b 的指针。
&B::d.b; // int B::*
我能得到的最接近的是获得它的偏移量。
offsetof(B, d.b) // size_t
但这没有大小或类型信息,所以我能做的最好的就是制作一个将偏移量和类型一起传递的宏,但不是int B::*。
有没有标准的解决方案?有什么非标准的解决方案吗?
在非标准方向上,我正在考虑制作一个像T<&B::d, &A::b> 这样使用的模板,并重新解释偏移量并将它们添加在一起,但我不确定如何进行重新解释部分。
我在 macOS 上使用 c++17 和最新的 Xcode clang。
【问题讨论】:
-
你真的需要一个成员指针吗?那将是一个可以指向
A::a或A::b的指针,但是如果您只需要指向一些B实例中的A::b,那么int*就可以了 -
@foreknownas_463035818:我在模板中传递它以用于许多实例,指向内存的指针并不是一个真正的选项
标签: c++ oop pointer-to-member