c++11 std::unique_ptr<> 添加多个参数
时间: 2024-11-22 10:45:13 浏览: 19
C++智能指针-unique-ptr智能指针详解.pdf
C++11引入了`std::unique_ptr`容器适配器,用于管理智能指针,它通常只持有单个资源所有权。然而,从C++17开始,`std::variant`结合了`unique_ptr`可以创建一个能存储不同类型对象的单一引用,这实际上实现了类似“带多个参数”的功能。
如果你想要创建一个`unique_ptr`容器并支持多种类型的参数,你可以考虑使用模板和`std::variant`。例如:
```cpp
template <typename... Args>
using VariantOfUniquePointers = std::variant<std::unique_ptr<Args>...>;
// 使用方式:
VariantOfUniquePointers<std::string, int> my_var;
my_var = std::make_unique<std::string>("Hello");
my_var = std::make_unique<int>(42);
```
这里,`VariantOfUniquePointers`是一个模板,它可以存储任意数量的`std::unique_ptr`,每种类型对应一个元素。每次分配新资源时,实际上是添加了一个新的`unique_ptr`实例到`variant`中。
阅读全文