有一种方法可以将指定了不同类的std::make_unique
传递给一个函数。std::make_unique
是C++标准库提供的一个模板函数,用于创建一个指定类型的动态内存对象,并返回一个std::unique_ptr
智能指针来管理该对象的生命周期。
要将不同类的std::make_unique
传递给一个函数,可以使用函数模板和参数包展开的技巧。下面是一个示例代码:
#include <memory>
#include <iostream>
// 定义一个模板函数,接受一个参数包并展开
template<typename... Ts>
void process_unique_ptrs(std::unique_ptr<Ts>&&... ptrs) {
// 对每个指针进行处理
((std::cout << *ptrs << std::endl), ...);
}
int main() {
// 创建不同类的对象并传递给process_unique_ptrs函数
auto ptr1 = std::make_unique<int>(42);
auto ptr2 = std::make_unique<double>(3.14);
auto ptr3 = std::make_unique<std::string>("Hello");
process_unique_ptrs(std::move(ptr1), std::move(ptr2), std::move(ptr3));
return 0;
}
上述代码中,process_unique_ptrs
函数是一个模板函数,接受一个参数包并展开。在函数体内部,我们可以对每个指针进行处理,这里只是简单地输出指针指向的对象。main
函数中,我们使用std::make_unique
创建了不同类型的对象,并将它们传递给process_unique_ptrs
函数。
这种方法能够实现将指定了不同类的std::make_unique
传递给一个函数的需求,通过模板和参数包展开的方式,实现了对不同类型的指针进行处理。在实际应用中,你可以根据具体的需求在process_unique_ptrs
函数中进行相应的操作。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云