Получение указателя на первый элемент структуры - PullRequest
0 голосов
/ 18 декабря 2018

Я думал, что стандарт предоставил мне функцию для нахождения 1 st элемента структуры.Хотя я не могу этого найти.

Я боюсь выравнивания: я не думаю, что reinterpret_cast в 1 st элемент структуры, это законно?

Так например дано struct { int first, int second } foo;как я могу получить адрес элемента 1 st в foo, если бы я не знал, что first представлен как элемент 1 st ?(Это означает, что &foo.first не является допустимым решением.)

1 Ответ

0 голосов
/ 18 декабря 2018

Я не думаю, что законно переинтерпретировать в 1-й элемент структуры это правда?

Это допустимо, но только с предварительным условием, чтокласс стандартно-макетный.Стандартный черновик:

[basic.compound]

Два объекта a и b могут преобразовываться указателями, если:

...

  • один - это объект класса стандартной компоновки, а другой - первый нестатический член данных этого объекта или, если у объекта нет нестатических членов данных, любой подобъект базового класса этого объекта (10.3), или

...

Если два объекта являются взаимозаменяемыми по указателю, то они имеют одинаковый адрес, и можно получить указатель на один из указателя на другой черезreinterpret_cast ...

...