私は c# から来た c++ が初めてです。次のコードは機能しておらず、何が必要かわかりません。なぜ機能しないのか、どのような適切な変更が必要なのかを理解するのに役立つ洞察をいただければ幸いです。
// GamePlayScreen derives from ScreenBase
std::unique_ptr<GameplayScreen> m_game(new GameplayScreen());
// MenuScreen derives from ScreenBase
std::unique_ptr<MenuScreen> m_menu(new MenuScreen());
// PauseScreen derives from ScreenBase
std::unique_ptr<PauseScreen> m_pause(new PauseScreen());
std::vector<std::unique_ptr<ScreenBase>*> screens;
screens.push_back(&m_game); // this gets the error
コンパイルエラーが発生します:
C2284 「パラメータ 1 を 'std::unique_ptr<_Ty> *' から 'std::unique_ptr<_Ty> *&&' に変換できません
最後の行をコメントアウトすると、正常にコンパイルされます。
基本的に、派生アイテム (またはそれらへのポインター) のコレクションが必要です。パラメータを「ポイントおよび/または参照」するさまざまな方法と、T in を確立するさまざまな方法を試しましたvector<T>
が、解決策がわかりません。