[c++]std::make_uniqueを関数の引数に
Posted: 2017年5月09日(火) 23:51
こんばんは
最近はue4をいじっていましたが、ようやくc++のコードを書けそうです。
今回の質問ですが、以下のコードをご覧ください。
上のコードのように、make_uniqueを関数の引数に渡したいのですが、引数の型が合わないと怒られてしまいます。
対策としてunique_ptr<Super>の変数にmake_uniqueの結果を代入し、それを引数に渡しているのですが、できることなら引数にmake_uniqueを渡してしまいたいです。
なにかいい方法はないでしょうか?
最近はue4をいじっていましたが、ようやくc++のコードを書けそうです。
今回の質問ですが、以下のコードをご覧ください。
class Super ;
class Sub : public Super ;
void Func(std::unique_ptr<Super>&& x) ; //Superクラスのポインタを引数にとる関数
int main()
{
//error
//引数の型が合わないと怒られる(unique_ptr<Sub>が作られるから?)
Func(std::make_unique<Sub>() ) ;
}
対策としてunique_ptr<Super>の変数にmake_uniqueの結果を代入し、それを引数に渡しているのですが、できることなら引数にmake_uniqueを渡してしまいたいです。
なにかいい方法はないでしょうか?