指向std :: array成员的指针

时间:2013-05-23 22:44:23

标签: c++ c++11 emscripten stdarray

假设我有一个包含另一个结构类型的对象数组的结构,如下所示:

struct foo { int x, y; };
struct bar { std::array<foo, 4> foos; };

是否可以可移植地编写一个表达式,该表达式将计算给定数组元素的给定属性的指向成员的指针?像&bar::foos[2]::x

这样的东西

应用程序是embind:如果可能的话,我想将这样的嵌套C ++类型映射到线性JavaScript元组。如果这不能使用指向成员的指针,那么我可能会尝试使用getter和setter方法,但我仍然想知道是否有办法获得这样的指针成员。

1 个答案:

答案 0 :(得分:1)

我认为你不能做那样的事情。 foos[2]不是bar的成员,只有foos。你不能从不是成员的东西中获得指向成员的指针。 C ++ 11标准的第5.3.1 / 4段规定:

  

只有在使用显式&并且其操作数是 qualified-id 未括在括号中时,才会形成指向成员的指针。

这意味着语法本身会阻止您编写任何看起来不像的内容:

&class_name::member_name

其中class_name本身可以是限定名称。不允许使用下标运算符或其他花哨的表示法。