基本クラスunique_ptr
を取得する関数で to 派生クラスを使用しようとしています。unique_ptr
何かのようなもの:
class Base {};
class Derived : public Base {};
void f(unique_ptr<Base> const &base) {}
…
unique_ptr<Derived> derived = unique_ptr<Derived>(new Derived);
f(derived);
この回答を正しく理解していれば、このコードは機能するはずですが、次のコンパイル エラーが発生します。
エラー C2664: 'f': パラメーター 1 を 'std::unique_ptr<_Ty>' から 'const std::unique_ptr<_Ty> &' に変換できません
IntelliSense: "std::unique_ptr<Derived, std::default_delete<Derived>>" から "const std::unique_ptr<Base, std::default_delete<Base>>" への適切なユーザー定義の変換が存在しません
f
takeに変更すると正常にunique_ptr<Derived> const &derived
動作しますが、それは私が望むものではありません。
私は何か間違ったことをしていますか?これを回避するにはどうすればよいですか?
Visual Studio 2012 を使用しています。