【问题标题】:how delete class variable in struct?如何删除结构中的类变量?
【发布时间】:2021-09-15 21:16:34
【问题描述】:
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)然后传递指针但在初始化时崩溃。

【问题讨论】:

  • 你为什么要这样做?您要解决的实际问题是什么?
  • delete 仅用于销毁使用new 创建的对象。您没有使用new,所以也不应该使用delete
  • obj 将在 data 碰巧被销毁时自动销毁。你还没有真正展示 data 是什么,所以我们不能说它是否或何时会发生自己的破坏。
  • 你没有;当它的包含对象被销毁时,它也被销毁。有好书清单here.
  • “我想在静态结构中调用我的 obj 变量上的解构” 这将发生在without your intervention

标签: c++


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2019-02-01
    • 1970-01-01
    • 2014-12-29
    • 2019-09-21
    • 1970-01-01
    • 2021-11-18
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多