Учитывая указатель, который указывает на известный член объекта, как я могу получить указатель на вмещающий объект?
Есть ли лучший способ, чем следующий?Это даже верно?
struct data {
int a,b;
};
data dummy;
static const std::ptrdiff_t offs_a = reinterpret_cast<char*>(dummy.a) - reinterpret_cast<char*>(dummy);
void main(){
data d;
int *v = &(d.a);
data *owner = reinterpret_cast<data *>(reinterpret_cast<char*>(v) - offs_a);
owner->b = 1;
}
В частности, мне не нравится использование фиктивного объекта dummy
только для определения смещения указателя.Есть ли способ прямого приведения, возможно, с использованием указателя на член, чтобы указать, какой (известный) член v
указывает на?