Здравствуйте, remark, Вы писали:
А>> Интересует, существует ли возможность как-нибудь ЭЛЕГАНТНО и без сложных извратов получить в поле какого-нить класса ссылку на объект который содержит это поле. Другими словами:
R>Можно, если не забыли откуда ноги растут:
А>>
R>class Base
R>{
R>public:
R> Base* parent;
R>};
R>class A : public Base
R>{
R>};
R>class B : public Base
R>{
R>public:
R> A member1;
R> A member2;
R> A member3;
R> //...
R> A memberN;
R> B()
R> {
R> std::fill_n((Base**)this, sizeof(*this)/sizeof(Base*), (Base*)this);
R> }
R>};
R>
R>Ну а если серьёзно. Разьве просто передать указатель это не "ЭЛЕГАНТНО и без сложных извратов"? Я уверяю, что любое другое решение будет более сложным.
Всё это элегантно работает пока пока в объекте-контейнере только объекты производные от Base. Как я понмаю, при появлении объекта элементарного типа int, float или виртуальной ф-ии, описанная конструкция перестаёт работать.

В Страуструпе есть приятный пример создания списка объектов производных от базового:
class Base {
Base* next;
static Base * list;
public:
Base()
{
next = list;
list = this;
}
};
кажись так...
...таким образом можно в любой момент "пройтись" по всем объектам производным от Base. А вот было бы шикарно если бы можно было бы каким-нить образом сохранить дерево объектов...