gpt4 book ai didi

c++ - ScopeGuard 解雇

转载 作者:行者123 更新时间:2023-11-28 08:22:32 26 4
gpt4 key购买 nike

我的代码需要范围守卫,但是我是否必须手动 Dismiss() 从函数正常退出时所有范围守卫?即

void Deleter(MyClass* obj)
{
delete obj;
}

MyClass* Func()
{
MyClass* obj = new MyClass();
ScopeGuard sg1 = MakeObjGuard(Deleter, obj);

//More objects created. And more scope guards.

sg1.Dismiss();
//...Same for other guards
return obj;
}

最佳答案

你必须在函数结束后解散你想要存活的对象的守卫。否则他们将各自删除他们正在守卫的对象。

关于c++ - ScopeGuard 解雇,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5269484/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com