一つ質問させてください。

あるオブジェクトを登録できる管理クラスを用意し、
オブジェクトを登録後、オブジェクトが削除されたら登録も
自動的に解除するという機能を入れようと考えています。
管理クラスからもオブジェクトメソッドにアクセスできるようにしたいのですが、
この場合単純に相互参照を使用するのが一番良い方法なのでしょうか?

現状ではこのような形を考えています。
class Child{
private:
Controller* m_pController; // Controller::register時に入る

public:
~Child(){ m_pController->unregister( this);}

void setControllerPointer( Controller* pController){ m_pController = pController;}
void update( void); // Controllerから呼びたい
};

class Controller{
private:
Child* m_pChild[6];

public:
void redister( Child* pChild, unsigned int slot);
void unredister( Child* pChild);
};

よろしくお願いします。