这可以做,我将如何传递shared_ptr?我发现了一些相关的问题(C++ variable number of arguments),但它没有完全解决我的问题。
我已经尝试了几种方法来编写这样的函数,但我得到的只是一个错误error: cannot receive objects of non-trivially-copyable type ‘class std::shared_ptr<Item>’ through ‘...’;
如果这根本不是一个好主意,我怎么能传递任意数量的shared_ptr作为参数,几乎像变量模板等?也许这比我想的更简单......
感谢您的帮助!
答案 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 });