gpt4 book ai didi

c++ - 将这种原始指针情况变成 unique_ptr?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:59:22 27 4
gpt4 key购买 nike

我有这样的代码:

ISessionUpdater* updater = nullptr;
if (eventName == "test")
updater = new TestJSONSessionUpdater(doc);
if (eventName == "plus")
updater = new PlusJSONSessionUpdater(doc);

if (updater)
{
bool result = updater->update(data);
delete updater;
return result;
}
return false;

除了使用 unique_ptr 之外,还有什么办法可以做这样的事情吗?

也就是说,只有 1 次调用 update(data) 而不是:

if(cond)
make unique
call update
end
if(cond)
make unique
call update
end
...

最佳答案

您的代码会像这样简单:

    std::unique_ptr<ISessionUpdater> updater;
if (eventName == "test")
updater = std::make_unique<TestJSONSessionUpdater>(doc);
if (eventName == "plus")
updater = std::make_unique<PlusJSONSessionUpdater>(doc);

return updater ? updater->update(data) : false;

您可以检查 std::unique_ptr 几乎与使用原始指针相同的方式

注意使用 RAII 如何简化调用部分。

关于c++ - 将这种原始指针情况变成 unique_ptr?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30804038/

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