1

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

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

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

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

4

1 回答 1

1

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

&仅当使用显式且其操作数是未括在括号中的限定标识时,才会形成指向成员的指针。

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

&class_name::member_name

whereclass_name本身可以是限定名称。不允许使用下标运算符或其他花哨的符号。

于 2013-05-23T22:46:38.787 回答