[英]Non ownership of unique_ptr
我有一個球隊向量,主隊和客隊被創建為unique_ptr
,因為match
應該擁有兩支球隊,並在Match
被摧毀時被摧毀。
我已經閱讀了許多文章並觀看了許多關於shared_ptr
和unique_ptr
的討論,關鍵似乎是所有權。
我將兩個團隊都放在一個vector
中:
std::vector<std::unique_ptr<Team> > m_pTeams{}; // Match.hpp
像這樣引用兩者的“幫助”變量是否可以接受?
const Team* m_pHome{}; // Match.hpp
const Team* m_pAway{}; // Match.hpp
m_pHome = m_pTeams[0].get(); // CreateTeams() within Match.cpp
m_pAway = m_pTeams[1].get(); // CreateTeams() within Match.cpp
擁有輔助變量並沒有錯。 您必須小心對象的生命周期。
假設Match
對象可以返回Team
對象 - 要考慮的一個問題是返回引用而不是指針。 這將防止在Match
之外創建和刪除Team
的任何濫用。
否則,您的代碼非常好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.