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

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不完整,或者是导致崩溃的原因。

最佳答案

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

这是什么意思?

1)为什么要转换为SharedPtr<A>?您确定演员阵容安全吗? iter是什么类型? *iter返回什么?

2)为什么您要删除上的?您是否在堆上创建了共享的PTR?这破坏了共享ptr的全部目的。您可以在堆栈上创建它,并根据需要对其进行复制,而不必在堆上创建它。

关于crash - 确定共享指针类型类不完整或完整以及崩溃的原因,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13309116/

10-14 08:14