質問です。
簡単のため、インスタンスは全て public とします。
また、クラス定義の順番がバラバラでコンパイルエラーが出るのは、ここでは気にしないとします。

class CParent
{
 CChildA a;
 CChildB b;
 void func() { a.func(this); }
};

CChildA
{
 void func(CParent* p) { p->b.hoge=3 }
};

CChildB
{
 int hoge;
};

のように記述すると、a が b のインスタンスにアクセスすることが出来ますが、
これはオブジェクト指向の概念からはずれてる気がします。
goto 文を避けるのが暗黙の了解になっているように、このような記述も避けるべきでしょうか?
それとも、このような記述は普通に行なわれているのでしょうか?