У меня есть вектор не копируемых объектов, и мне нужно использовать emplace_back()
для добавления к вектору. Очевидно, что возникает ошибка, что она пытается сослаться на удаленную функцию, потому что она не копируется. Мне просто интересно, есть ли способ сделать это? Я более конкретно пытаюсь получить вектор рендеринга sfml windows.
My Main
int main()
{
sf::RenderWindow window(sf::VideoMode(100, 100, 32), "Main Window", sf::Style::Default);
MakeKey MakeKey;
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
//Key Presses
if (event.type == sf::Event::KeyPressed) {
if (event.key.code == sf::Keyboard::A)
MakeKey.DrawKey("A");
else if (event.key.code == sf::Keyboard::D)
MakeKey.DrawKey("D");
//Ect
}
if (event.type == sf::Event::Closed)
window.close();
}
MakeKey.StepWindows();
}
return EXIT_SUCCESS;
}
My DrawKey Function
void MakeKey::DrawKey(string input)
{
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
sf::RenderWindow window(sf::VideoMode(Key.Img.getSize().x, Key.Img.getSize().y, 32), "Key", sf::Style::None);
Key.Tex.loadFromImage(Key.Img);
Key.Sprite.setTexture(Key.Tex);
KeyArray.emplace_back(std::move(Key));
WindowArray.push_back(std::move(window));
cout << "KeyArray Has " << KeyArray.size() << " Elements\n" << "WindowArray Has " << WindowArray.size() << " Elements" << endl;
}
My Step Windows Функция
void MakeKey::StepWindows()
{
for (int i{ 0 }; i > KeyArray.size(); i++)
{
cout << "Inside Step Windows For Loop" << endl;
WindowArray[1].setActive(true);
WindowArray[1].clear(sf::Color::Transparent);
WindowArray[1].draw(KeyArray[1].Sprite);
WindowArray[1].display();
}
}