私はComputer
と呼ばれるオブジェクトクラスを持っているとします。次に、Wire
という別のクラスがあるとします。 (これらの名前は単に私がやろうとしているかを説明するのに使用されている、本物はもう少し複雑です)複数のオブジェクトのネットワーキングの問題
struct Computer {
std::vector<Wire *> wires;
};
struct Wire {
Computer * computers[2];
};
だから私はコンピュータのクラスを持ち、すべてのコンピュータに何かをしたいのは、今言わせてワイヤを介して接続されています。私は、ループは、すべてのワイヤを介して可能性があり、コンピュータが行うので、ワイヤに方法があります:
wire->doSomething(this,blahblah)
ので、ワイヤは、他のコンピュータを見つけ、ワイヤのリストを通過し、同じことを行います。
をotherWire->doSomething(&otherComputer,blahblah)
(もちろん、リスト内で見つかるとスキップします)
これは機能しますが、循環リンクがある場合、すべてのボールに連続してdoSomething
を呼び出して無限ループを作成します。これを防ぐための最善の方法は何ですか、あるいはこの問題の全体的な解決法がありますか?
*脇には*:実世界のネットワークは、[同じ問題](http://en.wikipedia.org/wiki/Bridge_loop)を持っています彼らは(それは異なって解決するが)(http://en.wikipedia.org/wiki/Spanning_tree_protocol)。 –