Привет!
Есть 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() (указатели то разные).
Может быть есть другой способ?
Заранее спасибо.