我有一個程序做這樣的事情可能舉行以下:刪除在兩個不同的地方
class SomeObject{}
{
void function(int x, int y);
void function(SomeOtherObject *z);
SomeOtherObject *ptrToObj;
}
SomeObject::function(int x, int y)
{
ptrToObj = new SomeOtherObject(x, y);
}
SomeObject::function(SomeOtherObject *z)
{
ptrToObj = z;
}
我的問題是,我不知道要處理刪除,當我想新的目標的最佳途徑擺脫或初始化SomeObject的一個實例,因爲我不能指望它實際上是由SomeObject創建的。 (經理正在處理刪除,如果SomeObject傳遞指針)
選項我想到:
- 複製對象,並指向。 (似乎有兩個副本,但對象不是大,大)
- 做一個布爾值,如果該對象需要刪除設置的對象。 (這只是有點怪異和黑客)
- 使另一個指針保存由SomeObject創建的對象,指向ptrToObj而不是指定它時。 (所以基本上,你知道第二個指針可以安全地刪除,如果它不是NULL)
- 實現一個ref-counting指針。 (這是比我想要的更多一點)
我做了第三個,但我知道必須有更好的方法來處理這個問題!
'boost :: shared_ptr' – Erik 2011-04-07 17:44:18