相关疑难解决方法(0)

成员方法如何删除对象?

我目前正在学习COM,下面的代码让我困惑.

STDMETHODIMP _(ULONG) ComCar::Release()
{
  if(--m_refCount==0)
    delete this; // how could this "suicide" deletion be possible?
  return m_refCount;
}
Run Code Online (Sandbox Code Playgroud)

我想知道如何在其成员方法中删除对象实例?所以我做了以下实验:

class A
{
public:
    void Suicide(void);
    void Echo(void);
    char name;
};

void A::Echo(void)
{
    ::printf("echo = %c\n",name);
}

void A::Suicide(void)
{
    delete this;
}

int main(void)
{
    A a;
    a.name='a';
    a.Suicide(); //failed
}
Run Code Online (Sandbox Code Playgroud)

并且执行确实在a.Suicide()失败了.调试报告一些"Debug Assertion Failed".有人会对我有所了解吗?因为我完全是COM的新手.

相关的主题在这里:关于COM Release()方法的问题

c++ com

5
推荐指数
2
解决办法
495
查看次数

标签 统计

c++ ×1

com ×1