首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

有没有一种方法可以将指定了不同类的std::make_unique传递给一个函数

有一种方法可以将指定了不同类的std::make_unique传递给一个函数。std::make_unique是C++标准库提供的一个模板函数,用于创建一个指定类型的动态内存对象,并返回一个std::unique_ptr智能指针来管理该对象的生命周期。

要将不同类的std::make_unique传递给一个函数,可以使用函数模板和参数包展开的技巧。下面是一个示例代码:

代码语言:txt
复制
#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函数中进行相应的操作。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券