Указатель на член для std :: array

Предположим, у меня есть структура, содержащая массив объектов другого типа структуры, например:

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

Можно ли переносить запись выражения, которое будет вычислять указатель на член для данного атрибута данного элемента массива? Что-то вроде &bar::foos[2]::x?

Приложение embindЯ бы хотел отобразить вложенный тип C ++, как этот, в линейный кортеж JavaScript, если это возможно. Если это не сработает с использованием указателя на член, то я мог бы попробовать вместо этого использовать методы getter и setter, но я все же хотел бы знать, есть ли способ получить такой указатель на член.

1

Решение

Я не думаю, что вы можете сделать что-нибудь подобное. foos[2] не является членом bar, только foos является. Вы не можете получить указатель на член от чего-то, что не является членом. Параграф 5.3.1 / 4 стандарта C ++ 11 определяет:

Указатель на член формируется только при явном & используется и его операнд Квалифицированный-идентификатор не заключено в скобки.

Это означает, что сама грамматика не позволяет вам писать что-то, что не похоже на:

&class_name::member_name

где class_name само по себе может быть квалифицированным именем. Никакие операторы индекса или другие необычные обозначения не допускаются.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]