指向成员复合的指针
Pointer to member compounding
我有两个结构
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>
一样使用,并且可以重新解释偏移量并将它们加在一起,但我不确定如何进行重新解释部分。
您可以使用两个成员指针:
int A::* foo = &A::b;
A B::* bar = &B::d;
B objB;
int& db = objB.*bar.*foo;
缺点是每个偏移量都是单独存储的,如果在运行时完成,则效率低下。不过,对于编译时元编程来说应该没问题。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 数组的指针从不分段故障
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 何时在引用或唯一指针上使用移动语义
- QMetaObject invokeMethod的基于函数指针的语法
- 如何从 std::atomic 中提取指针 T<T>?
- 如何在 C# 中映射双 C 结构指针?
- 用推广make_shared和make_unique的方法复合指针特征类
- 指向成员复合的指针
- 复合数据结构和摆弄指针
- 指向复合类数据成员的指针-第2部分
- 指向复合类数据成员的指针
- 如何在复合c++中展开指针数组
- 表达式列表在创建指向 Mat 向量的指针时被视为初始值设定项中的复合表达式