首页 > 解决方案 > 如何删除结构中的类变量?

问题描述

InitMyObject(MyObject* ptr)
{
    *ptr = MyObject();
}

struct Data
{
    MyObject obj;
};

extern Data data;


// ...

InitMyObject(&data.obj); 

delete &data.obj; // ? is this ok

我如何删除(调用解构器)data.obj,我也尝试Data::obj作为指针(默认为 nullptr)然后传递指针但在初始化时崩溃。

标签: c++

解决方案


我如何删除(调用解构器)data.obj

的析构函数data将销毁其子对象。由于data具有静态存储,它会在程序结束时自动销毁。

delete &data.obj; // ? is this ok

不可以。您只能删除非放置新表达式的结果。您不能删除指向成员对象的指针。


推荐阅读