Получение адреса объекта по адресу члена этого объекта
От: maks1180  
Дата: 10.12.22 17:20
Оценка:
Мне нужно получить адреса объекта по адресу члена этого объекта. Планирую это делать через offsetof.
1) Есть ли другие способы ?
2) Я не совсем понял в описании кажется, что с ним будут проблемы в C23 ? Насколько надёжно и правильное это решение ?
3) gcc генерирует warning если в классе есть виртуальные функции. Но код генерирует правильный с учётом указателя на v-table. В чём тут дело ?

// gcc v4.8 Linux
warning: invalid access to non-static data member ‘MyClass::a’ of NULL object

// gcc v10.2 Windows
warning: 'offsetof' within non-standard-layout type 'MyClass' is conditionally-supported [-Winvalid-offsetof]


printf("%u \n", offsetof(MyClass, a));

class MyClass {
public:
virtual void Test1() {};
UPTR a;
int b;
int c;
};
===============================================
(реклама, удалена модератором)
Отредактировано 10.12.2022 17:22 maks1180 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.