Re: Получение адреса объекта по адресу члена этого объекта
От: _NN_ www.nemerleweb.com
Дата: 10.12.22 21:04
Оценка:
Здравствуйте, maks1180, Вы писали:

M>Мне нужно получить адреса объекта по адресу члена этого объекта. Планирую это делать через offsetof.

M>1) Есть ли другие способы ?
M>2) Я не совсем понял в описании кажется, что с ним будут проблемы в C23 ? Насколько надёжно и правильное это решение ?
M>3) gcc генерирует warning если в классе есть виртуальные функции. Но код генерирует правильный с учётом указателя на v-table. В чём тут дело ?

Макрос offsetof работает в классах со стандартной разметкой.
При добавлении виртуальных функций, а ещё с возможностью множественного наследования компилятору сложно определить, что вам нужно

Начиная с C++17 компилятор [url-https://en.cppreference.com/w/cpp/types/offsetof]может, но не обязан,[/url] поддерживать для классов с виртуальной таблицей.

Как мне кажется лучшим вариантом будет найти способ убрать виртуальную функцию где требуется offsetof.
Или пользоваться только компиляторами поддерживающими данную функциональность если нет другого варианта.
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.