>>620
相互に参照する必要があるなら、公開するメンバ関数のみをインタフェイスとして

class IModuleA {
public:
virtual int foo() = 0;
};

のように分離して、CModuleA はそれから派生させて実装を追加するという手も定番。

CMgr には IModuleA* GetA() { return &m_moduleA;} みたいなのを追加して、
CModuleB などからはこれで得たインタフェイス経由でCModuleAのインスタンスを
操作する。