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 では、次のように指定されています。

&メンバーへのポインターは、explicitが使用され、そのオペランドが括弧で囲まれていない修飾 IDである場合にのみ形成されます。

これは、文法自体が、次のように見えないものを書くことを妨げていることを意味します:

&class_name::member_name

whereclass_name自体が修飾名である可能性があります。添え字演算子やその他の特殊な表記は使用できません。

于 2013-05-23T22:46:38.787 に答える