0

类构造函数具有这样的声明...

Class A:
{
  public:
 A(int a, SharedPtr<class T>sp = SharedPtr<class T>());
 ~A();
}

现在从另一个类中,我将这个类作为共享指针销毁

delete (SharedPtr<A>*)(*iter);

现在结果它崩溃了checked_delete<class T>

谁能说这SharedPtr<class T>sp是不完整的,或者崩溃的原因是什么。

4

1 回答 1

0
delete (SharedPtr<A>*)(*iter);

这是什么意思?

1)你为什么要投到SharedPtr<A>?你确定演员是安全的吗?什么类型iter?返回什么*iter

2)你到底为什么要删除共享ptr 您是否在堆上创建了共享 ptr?!这违背了共享 ptr 的全部目的。您在堆栈上创建它并根据需要复制它,而不是在堆上创建它。

于 2012-11-12T00:15:24.083 回答