通过变量参数列表传递shared_ptr

时间:2013-04-09 18:39:51

标签: c++ shared-ptr variadic-functions

这可以做,我将如何传递shared_ptr?我发现了一些相关的问题(C++ variable number of arguments),但它没有完全解决我的问题。 我已经尝试了几种方法来编写这样的函数,但我得到的只是一个错误error: cannot receive objects of non-trivially-copyable type ‘class std::shared_ptr<Item>’ through ‘...’;

如果这根本不是一个好主意,我怎么能传递任意数量的shared_ptr作为参数,几乎像变量模板等?也许这比我想的更简单......

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

使用C ++ 11,您可以使用可变参数模板或初始化列表。初始化程序列表更容易使用,因为它们不需要递归,并且可以在单独的编译单元中定义:

void foobar(std::initializer_list<std::shared_ptr<widget>> widgets);

std::shared_ptr<widget> foo;
std::shared_ptr<widget> bar;
foobar({ foo, bar });