Сложные ошибки в refacored pong из примеров sfml

Я изучаю SFML на примере понга.

Оригинальный код можно найти там. Я пытаюсь поместить эти строки в функцию, а затем сделать вызов:

    sf::RenderWindow window(
sf::VideoMode( gameWidth, gameHeight, 32 ),
"SFML Pong",
sf::Style::Titlebar | sf::Style::Close
);
window.setVerticalSyncEnabled( true );

sf::RenderWindow
CreateWindow( int width, int height, int color_depth, std::string title ){
sf::RenderWindow window( sf::VideoMode( width, height, color_depth ), title );
window.setVerticalSyncEnabled( true );
return window;
}
//....
sf::RenderWindow window = CreateWindow( gameWidth, gameHeight, 32, "My SFML pong" );

И получить полную кучу неочевидного ошибки. Что я делаю неправильно?

0

Решение

Первая ошибка говорит вам все, что вам нужно знать:

In file included from /usr/include/SFML/System/Lock.hpp:32:0,
from /usr/include/SFML/System.hpp:36,
from /usr/include/SFML/Window.hpp:32,
from /usr/include/SFML/Graphics.hpp:32,
from main.cpp:5:
/usr/include/SFML/System/NonCopyable.hpp: In copy constructor ‘sf::Window::Window(const sf::Window&)’:
/usr/include/SFML/System/NonCopyable.hpp:67:5: error: ‘sf::NonCopyable::NonCopyable(const sf::NonCopyable&)’ is private NonCopyable(const NonCopyable&);

Window по наследству, NonCopyable, Поэтому вы не можете вернуть его из функции.

Решение состоит в том, чтобы взять ссылку на окно в качестве ввода вашей функции:

void CreateWindow( sf::RenderWindow& window, int width, int height, int color_depth, std::string title )
1

Другие решения


По вопросам рекламы [email protected]