這是C++透視圖中的一般設計問題。我有一個包含2個其他類的對象的容器類。如何將Contained類調用包含類的成員函數 - C++中的成分
從容器類中,我們可以調用包含的類對象的方法,「因爲我們已經處理了包含的類對象」,例如objContainedClass1-> SomeMthod();
但我想知道包含的類對象(objContainedClass1)將如何訪問容器類的方法。
我能想到的以下方式:
容器類對象傳遞指針本身(該指針),以所包含的類的構造函數。使用這個指針,包含的類可以訪問容器類的方法。
將容器類中的某些函數設置爲靜態。
有沒有更多的想法呢?
謝謝
我真的不知道雙向關聯與單一責任原則有什麼關係。如果不是強制性的,我可以想到很多情況下雙向關聯是有用的。例如,在樹結構中(參見Composite),在節點中引用父對象通常很有用。 – 2010-09-14 14:08:29
這取決於情況。在知道其他節點的圖中並不是什麼大不了的事情。但大多數情況下,這是一個壞主意。套接字不應該知道它們所在的FD_SET,如果你的實現是這樣的話,那是因爲你的套接字做了不止一件事,也就是違反了SRP。所以它不是自動的,不是10次,但不是正確的做法。大多數時候,當我看到容器正在成爲一個容器,並在其他地方做一些應該包含另一個同伴的東西時。 – stonemetal 2010-09-14 14:15:35
我希望我可以刪除我的downvote,因爲你的評論現在增加了我認爲在你的答案中缺乏的細微差別,但它不再可能:(。 – 2010-09-14 14:43:36