我有一個包含對象指針向量的類。我在該類中有一個GetObject(..)函數,它查看矢量,找到所需的對象,並返回指向它的指針。但是,如果該類的用戶在該返回的指針上執行了delete(),則我的程序將崩潰,因爲該向量仍然有一個指向該對象的指針,現在是無效對象。所以,在我的GetObject()類中,我可以返回一個const指針,但這並不能解決問題,因爲您仍然可以刪除該對象。該對象是可變的,所以我不能返回一個指向const對象的指針。我想我可以通過返回對象的引用來防止刪除,但我有我的函數返回NULL,如果有錯誤。我想我可以傳回通過參數的對象引用,然後返回和錯誤值這樣如何在不使用const的情況下防止刪除指針?
//-1 on object on found. 0 for success. Object is passed back in
// the function parameter result.
int MyObject::GetObject(int object_id, Item& result)
這是對這種情況最好的解決辦法?
+1:這是一個很好的解決方案的最相關的原因是,使用智能指針,他們不能再直接調用對象上的刪除,沒有很多明顯的錯誤/明顯邪惡的黑客。正如詹姆斯已經描述的那樣,還有其他的好處,但這是最適用於這個問題的。 – 2010-11-14 22:40:19