0

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

如果这根本不是一个好主意,我怎么能传递任意数量的 shared_ptr 作为参数,几乎类似于可变参数模板之类的东西?也许这比我想象的还要简单......

谢谢你的帮助!

4

1 回答 1

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 });
于 2013-04-09T18:47:24.300 回答