【问题标题】:Determining shared pointer Type class Incomplete or complete and the reason of crash确定共享指针类型类不完整或完整以及崩溃的原因
【发布时间】:2012-10-29 20:01:39
【问题描述】:

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

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

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

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

现在它崩溃了checked_delete&lt;class T&gt;

谁能说这个SharedPtr&lt;class T&gt;sp在这里不完整或崩溃的原因是什么。

【问题讨论】:

    标签: crash shared-ptr incomplete-type


    【解决方案1】:
    delete (SharedPtr<A>*)(*iter);
    

    这是什么意思?

    1) 你为什么选择SharedPtr&lt;A&gt;?你确定演员是安全的吗? iter 是什么类型? *iter 返回什么?

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

    【讨论】:

      猜你喜欢
      • 2020-04-30
      • 1970-01-01
      • 2016-12-07
      • 1970-01-01
      • 2021-12-31
      • 2012-08-15
      • 1970-01-01
      • 2015-10-09
      相关资源
      最近更新 更多