說我有一個對象類,稱爲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)。 – 2012-03-14 17:58:01