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 に答える