ツリーのクラス構造について質問です。
現在、以下のようなクラスを考えています。

class Base{}
class ParentBase : public Base { };
class Parent : public ParentBase { };
class ChildBase : public Base { };
class Child : public ChildBase { };

class ChildA : public Child {}
class ChildB : public Child {}
class ParentA : public Parent
{
public:
   ChildA childa;
   ChildB childb;
};
class ParentB : public Parent
{
 public:
   ParentA parenta;
};

Parentの派生クラスは、メンバ変数でChildだったり、Parentのオブジェクトの実体を保持します。(例:ParentA, B)

ここで、各Parentが保持するオブジェクトから、親オブジェクトへアクセスする方法はないでしょうか?
やりたいことは、ParentA::childaで、ParentAの関数を呼ぶ、ParentB::parentaで、ParentBの関数を呼ぶ、ということがしたいのです。

一番基底クラスのBaseクラスで、Baseクラスへのポインタ持たせてやろうと思ったのですが、そのポインタへの実体のセット方法がわからなくて、迷ってしまいました。

何かいい方法はないでしょうか?