我是来自 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>
但解决方案让我望而却步。