c++ - 如何删除结构中的类变量?
问题描述
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)然后传递指针但在初始化时崩溃。
解决方案
我如何删除(调用解构器)data.obj
的析构函数data
将销毁其子对象。由于data
具有静态存储,它会在程序结束时自动销毁。
delete &data.obj; // ? is this ok
不可以。您只能删除非放置新表达式的结果。您不能删除指向成员对象的指针。
推荐阅读
- c++ - 为什么指针不存储和打印与它应该匹配的对象相同的数据?(C++)
- php - 如何通过ID删除数据库中的数据
- python - 如何使判断碰撞的代码成为乌龟和矩形
- python - 如何拧进度条来复制文件
- performance - 如果列表计数大于 1M,则 Schwartzian 变换不会明显更快
- javascript - JavaScript 中如何实现“数组”?
- javascript - 循环仅将最后一个元素添加到数组中
- java - 获取范围内的 Firebase 文档
- django - 将测试渲染为模板:{% static %} 不起作用
- grails - Spring security UI grails插件用户注册错误