gpt4 book ai didi

c++ - 传递智能指针的更简洁的替代方案

转载 作者:行者123 更新时间:2023-12-01 19:18:56 26 4
gpt4 key购买 nike

我们都知道并喜欢智能指针,因为它们的安全性和速度,但是必须调用这样的函数让我感到厌烦:

void TreeNode::addChild(unique_ptr<TreeNode> newChild){
children_.push_back(std::move(newChild));
}
//This has to be called like so:

node.addChild(unique_ptr<TreeNode>(new TreeNode(10));

我发现它不必要地冗长和冗长。这真的是最好的做事方式吗?我不能只传递一个原始指针并在 addChild 内部创建我的 unique_ptr 吗?有哪些替代方案?这种冗长的内容有什么好处?

编辑:我想添加 TreeNode 可以从中派生,因此仅实现 addChild(int arg) 还不够。但是

最佳答案

在 C++14 中,您可以使用 std::make_unique功能。

在C++11中自己实现,例如:

#include <memory>

struct X { X(int, int); };

void foo(std::unique_ptr<X>);

template<class T, class... Args>
inline std::unique_ptr<T> make_unique(Args&&... args) {
return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
}

int main() {
foo(make_unique<X>(1, 2));
}

关于c++ - 传递智能指针的更简洁的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23291656/

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