У меня есть struct (Member), который может использоваться только как элемент данных в какой-либо другой структуре (Контейнер). По соглашению имя члена всегда m. Есть ли надежный способ для члена получить адрес содержащейся структуры?Инвертировать указатель на элемент (т. Е. Получить адрес содержащейся структуры)
template<typename Struct>
struct Member;
{
const Struct& s = ??;
// this - &Struct::m
};
struct Container
{
Member<Container> m;
};
Я надеялся, что, возможно, используя указатель на член &Container::m
может помочь вычислить назад от адреса самого объекта-членов?
Это не имеет никакого смысла. '& Container :: m' - это * смещение *' '' '' Container'. Он не указывает на какой-либо конкретный объект 'Member'. – Angew
Если содержащийся класс является стандартным макетом, вы должны иметь возможность работать с 'offsetof'. – Angew
Правильные строчки '& Struct :: m'. Проблема заключается в этом. Где будет инициализироваться и на что ссылается? – chmike