c++ - 指向成员的指针的偏移量

标签 c++ templates member-pointers

template<class T, typename U> ptrdiff_t foo(T U::* m)
{
    // return offset
}

在此上下文中如何获取字段“m”的偏移量?我更愿意使用 am 编译时表达式。

在此先感谢您的帮助。最好的问候

最佳答案

@迈克尔J

感谢您的回答。这不是我一直在寻找的东西,但它给了我这样做的灵感:

template<class T, typename U>
std::ptrdiff_t member_offset(U T::* member)
{
    return reinterpret_cast<std::ptrdiff_t>(
        &(reinterpret_cast<T const volatile*>(NULL)->*member)
    );
}

关于c++ - 指向成员的指针的偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5617251/

相关文章:

c++ - 使用双向链表实现 map

c++ - 与值初始化的迭代器相比,它的定义是否明确?

java类问题

c++ - 在使用指向 const 和非常量方法的成员指针时减少模板特化的数量

c++ - 用 C 封装 C++ 接口(interface)

c++ - 编译时生成一个遗漏的整数序列

c++ - 如何组合两个具有相同代码的模板函数?

c++ - 如何创建C++宏来定义使用调用另一个函数的参数列表的函数?

c++ - 创建 std::function 返回具有函数成员值的变量。分段故障

c++ - 我可以编写指向成员的指针吗