c++ - sf::RenderWINdows 的向量
问题描述
我有一个需要打开多个 sfml 窗口的程序,我正在尝试使用一个将后窗口放置到数组的函数。我有由 unique_ptr 制成的向量,但是当我使用 emplace_back 时出现此错误。
Error C2664 'sf::RenderWindow::RenderWindow(const sf::RenderWindow &)': cannot convert argument 1 from '_Ty' to 'sf::WindowHandle' C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include\memory 2064
产生错误的最小代码:
void MakeKey::DrawKey(string input)
{
unique_ptr <sf::RenderWindow> window = make_unique<sf::RenderWindow>(new sf::RenderWindow);
MakeKey::NewKey Key;
if (input == "A")
Key.Img.loadFromFile("Assets/Images/A.png");
else if (input == "D")
Key.Img.loadFromFile("Assets/Images/D.png");
//ect
window->create(sf::VideoMode(Key.Img.getSize().x, Key.Img.getSize().y, 32), "Key", sf::Style::None);
unique_ptr<sf::RenderWindow> windowPtr;
WindowArray.emplace_back(move(windowPtr));
Key.Tex.loadFromImage(Key.Img);
Key.Sprite.setTexture(Key.Tex);
KeyArray.emplace_back(move(Key));
WindowArray.emplace_back(move(window));
cout << "KeyArray Has " << KeyArray.size() << " Elements\n" << "WindowArray Has " << WindowArray.size() << " Elements" << endl;
}
vector <MakeKey::NewKey> KeyArray;
vector <unique_ptr<sf::RenderWindow>> WindowArray;
供参考 RenderWindow 是不可复制的。我以前从未使用过唯一指针,所以这可能是问题所在。无论如何,谢谢你的帮助。
解决方案
unique_ptr <sf::RenderWindow> window = make_unique<sf::RenderWindow>(new sf::RenderWindow);
应该
unique_ptr <sf::RenderWindow> window = make_unique<sf::RenderWindow>();
的参数make_unique
是您要提供给 的构造函数的参数sf::RenderWindow
。
你被这个符号弄混了
unique_ptr <sf::RenderWindow> window(new sf::RenderWindow>());
这是一种替代方案,make_unqiue
但出于简单和高效的原因,通常make_unique
是首选。
也不要忘记您可以通过使用 auto 进一步简化
auto window = make_unique<sf::RenderWindow>();
推荐阅读
- c# - 有没有办法从网站调用安装在服务器上的桌面应用程序?
- jsf - 是否可以在 Prime Faces DataTable rowEditor 中仅显示确认而不显示取消按钮图标?
- keycloak - 如何在 Keycloak 客户端注册中上传 XML?
- machine-learning - 删除重要特征后再构建一个模型
- c++ - 将对象添加到向量是否会存储该对象的地址?
- reactjs - Material-UI:如何指定芯片的最大宽度?
- javascript - 使用 jquery.counterup.min.js 在 HTML span 标签元素上的 JavaScript 计数器不起作用
- performance - 使用 Multiple plus 或 do plus 组合跳转(表演)
- java - 排序多维数组(Java)
- python - Panda Dataframe to SQL 错误:提供的绑定数量不正确。当前语句使用 3,提供了 5 个