C++ SFML Thread как передать аргументы в класс?
У меня есть main.cpp, в нем я хочу реализовать экран загрузки, по этому я хочу воспользоватся многопоточностью, но когда я это делаю у появляется ошибка:
как мне лучше это реализовать?
main.cpp
#include <SFML/Graphics.hpp>
#include "GameMenu.cpp"
#include "Settings.cpp"
using namespace sf;
int main()
{
RenderWindow window(VideoMode(1366, 768, 32), "CLANNAD ~The Story of Sunohara~");
Image icon;
if (!icon.loadFromFile("DATA/Texture/icon/icon.png")) {
return EXIT_FAILURE;}
window.setIcon(icon.getSize().x, icon.getSize().y, icon.getPixelsPtr());
bool started = false;
Thread thread(&GameMenu::load_screen, &window, &started);
thread.launch();
bool Full = false;
ConfigFile Config;
Config.output_config();
if (Full == true) {
window.create(VideoMode(), "CLANNAD ~The Story of Sunohara~", Style::Fullscreen);}
if (Full == false) {
window.create(VideoMode(1366, 768, 32), "CLANNAD ~The Story of Sunohara~");
}
window.setVerticalSyncEnabled(true);
//Set icon window
GameMenu GM;
GM.menu(window);
return 0;
}
GameMenu.cpp
class GameMenu {
public:
void load_screen(RenderWindow& window, bool& started) {
Texture Imagebackground;
Imagebackground.loadFromFile("DATA/Texture/icon/background_sattings_befor.png");
Sprite SpriteBackground;
SpriteBackground.setTexture(Imagebackground);
SpriteBackground.setScale(
window.getSize().x / SpriteBackground.getGlobalBounds().width,
window.getSize().y / SpriteBackground.getGlobalBounds().height);
if (started == true) {
while (window.isOpen()) {
Event event;
while (window.pollEvent(event)) {
if (event.type == Event::Closed)
window.close();
}
window.clear();
window.draw(SpriteBackground);
window.display();
return;
}
}
if (started == false) {}
}
