【发布时间】:2011-08-02 19:13:08
【问题描述】:
template<class T, typename U> ptrdiff_t foo(T U::* m)
{
// return offset
}
在这种情况下如何获取字段“m”的偏移量?我更喜欢使用 am 编译时表达式。
提前感谢您的帮助。最好的问候
【问题讨论】:
-
这可能是个坏主意。为什么不使用指向成员的类型呢?
-
哼,你到底是什么意思?上面的参数是一个指向成员的指针...
-
好吧,就这样吧。偏移量太原始,无法用于大多数 C++ 类(非 POD)。
-
好的,但是你已经写了'为什么不使用指向成员类型的指针 INSTEAD?你是什么意思?顺便说一句:我可以编写我的 member_offset 函数的编译器特定版本。
-
@GManNickG Vulkan、OpenGL 和任何其他使用结构化缓冲区的图形库都需要偏移量而不是指向成员的指针。在这种情况下,他们不理解指向成员的指针,您必须将其转换为偏移量。
标签: c++ templates member-pointers