ポインタの循環とクロージャ

 ポインタは循環せざるを得ないとこはあるのだが、クロージャでの使用に留めるべきだろうと思う。クロージャなら暗黙に親への参照は持っているのだが本人はいじれないので問題は無い。クロージャがないならinterfaceのみの使用に留めるべきだという話になるだろう。これがつまりクラス定義は循環すべきでないということだ。interfaceは参照するが親のクラス定義を参照している実装クラスは参照しない。もちろんinterfaceのメソッドの引数に親の型を入れたりしてもいけない。親のことは全く知らず、誰かが入れたクロージャで間接的に親に効力を及ぼす。

 ただそれでもポインタは循環してるので、C++のような参照カウントポインタに頼らざるを得ない環境ではクロージャ死亡フラグそのものではないかと思う。でもクロージャから親への参照をweakptrにすれば解決する話なのかな。しかし子より親の方が必ず長生きと言えるんだろうか。