Преобразовать указатель на член в указатель на класс
От: Аноним  
Дата: 08.11.10 21:06
Оценка:
Есть объект класса С++, и я знаю указатель на один из его членов.
Как получить указатель на сам объект? Можно ли это сделать без грязных хаков, offsetof-ов, reinterpret_cast-ов и пр. ?

class Foo {
 public:
  Foo(): m_n(0) {}

 public:
  int m_n;
};

Foo* foo_member_cast(int* pi);

void main()
{
  Foo foo;
  int *pi=&foo.m_n;

  Foo *pfoo=foo_member_cast(pi);

  assert(pfoo==&foo);
}

Foo* foo_member_cast(int* pi)
{
// How to realize it?
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.