我有一個有向無環圖,由節點對象組成。每個節點都有一個std::shared_ptr
的清單給其他節點,它們是圖中的子節點。我需要很多有用的方法,比如插入/放置/重新設置節點,測試節點是否是另一個節點的祖先等等。有些是標準的STL類方法,有些是針對有向無環圖而特定於我的需要。C++設計:通過指針/引用ref-counting對象
問題是,當這種方法將節點作爲參數時,是否需要引用?的weak_ptr
?或shared_ptr
?我試圖檢查用例,但很難說清楚。這裏最好的設計是什麼?我是新來的智能指針,我不確定什麼是最好的選擇。我應該將shared_ptr<Node>
作爲節點對象的「表示形式」嗎?或者,也許選擇的方式更復雜?
預先感謝
我看到......我沒有意識到弱ptrs沒有operator->,所以傳遞它們是沒用的,因爲在大多數方法中,在做任何事情之前,我必須轉換爲共享ptr – cfa45ca55111016ee9269f0a52e771