指向std::array成员的指针
Pointer to member for std::array
假设我有一个结构体包含另一种结构体类型的对象数组,如下所示:
struct foo { int x, y; };
struct bar { std::array<foo, 4> foos; };
是否可以移植地编写一个表达式,该表达式将计算为给定数组元素的给定属性的指向成员的指针?比如&bar::foos[2]::x
?
应用程序是嵌套的:如果可能的话,我想将像这样的嵌套c++类型映射到线性JavaScript元组。如果使用指针到成员不能实现这一点,那么我可能可以尝试使用getter和setter方法,但我仍然想知道是否有一种方法可以获得这样的指针到成员。
我认为你做不到。foos[2]
不是bar
的成员,只有foos
是。你不能从非成员中获得指向成员的指针。c++ 11标准第5.3.1/4段规定:
成员指针仅在使用显式
&
且其操作数为限定id且未括在括号内时才形成。
这意味着语法本身阻止您编写任何看起来不像的内容:
&class_name::member_name
,其中class_name
本身可以是限定名。不允许使用下标操作符或其他花哨的符号。
相关文章:
- 如果基类包含双指针成员,则派生类的构造函数
- C++正确的指针成员初始化
- 是否可以使用智能指针成员设置具有另一个结构的结构?
- 为什么 operator() 处的指针成员不起作用?
- 更改队列指针成员的值需要在 C++ 中出现奇怪的错误
- 如何从另一个嵌套类中调用某个封闭类的嵌套类的函数指针成员的值?
- 结构对象的指针成员在传递给函数时被修改
- 参数的混合值,当我调用指针成员函数时
- 如何正确使用结构的共享指针成员?
- C++:私有类指针成员返回未定义的值
- 在函数中传递带有指针成员的结构是浅拷贝或深拷贝在 C 中
- 包含指针成员的嵌套结构
- 在 c++ 中,为什么 -> 被称为二进制中缀指针成员访问运算符?
- C++ 类指针成员行为奇怪(错误)
- 常量结构的指针成员
- 在类C++指针成员中
- 指针成员未在复制构造函数中初始化
- C++移动拥有指针成员的构造函数
- C++ 包含唯一指针成员变量的类的赋值运算符
- 如何使用 QPoint 指针成员对类进行排队和取消排队