我有一个程序执行以下操作:
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传递指针,则管理器正在处理删除)
我想到的选项:
我做了第三个,但我知道必须有更好的方法来处理这个问题!
答案 0 :(得分:2)
使用shared_ptr
,the one from Boost或最近的C ++(0x)库中的shared_ptr
。 {{1}}确实为您引用了计数。
答案 1 :(得分:0)
这种情况可能由shared_ptr
解决,如前所述,但我建议阅读有关其他策略的智能指针。我在技术和使用它们的情况下找到了一个有趣的summary。
答案 2 :(得分:0)
如果您不想使用智能指针,请查看观察者DP。