Преобразование this в std::shared_ptr
От: Lonely Dog Россия  
Дата: 26.12.12 10:10
Оценка:
Привет!

Есть 2 класса.
class Parent
{
public:
  ChildPtr GetChild();
};
typedef std::shared_ptr<Parent> ParentPtr;

class Child
{
public:
  ParentPtr GetParent();
};
typedef std::shared_ptr<Child> ChildPtr;

Другими словами, есть корневой узел, который умеет отдавать дочерние узлы. В свою очередь дочерние узлы должны уметь возвращать своего родителя.
При этом мне хотелось бы, чтобы Child отдавал в качестве родителя именно тот экземпляр Parent, который его создал (создание нового Parent это долгая операция). Как это сделать? Пока сделал так: разделил Parent на 2 класса. Parent и ParentImpl. В Child передаю ParentImpl, при вызове GetParent создаю новый экземпляр Parent. В этом случае все будет работать быстро, но Parent != Parent->GetChild()->GetParent() (указатели то разные).

Может быть есть другой способ?
Заранее спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.