我尝试在游戏中使用SFML线程,但我遇到了问题。 我的代码:
void MyGame::endGame()
{
sf::Thread thread(&PuzzleGame::endThread);
thread.Launch();
}
void MyGame::endThread()
{
}
结果我得到了:
../src/MyGame.cpp: In member function ‘void MyGame::endGame()’:
../src/MyGame.cpp:186:51: error: no matching function for call to ‘sf::Thread::Thread(void (MyGame::*)())’
sf::Thread thread(&MyGame::endThread);
^
可能有什么问题?
修改 我使用SFML 1.6
答案 0 :(得分:1)
答案 1 :(得分:1)
如果要传递类函数,还需要传递要调用它的对象:
void MyGame::endGame()
{
sf::Thread thread(&MyGame::endThread, this);
thread.launch();
}
void MyGame::endThread()
{
}
或者,您可以使用静态类方法:
void MyGame::endGame()
{
sf::Thread thread(&MyGame::endThread);
thread.launch();
}
static void MyGame::endThread()
{
}
请阅读有关SFML线程的完整文档。创建线程的局部变量没有帮助。超出范围时,它将被销毁,您希望线程运行,而不是删除。
我看到你正在使用旧的SFML 1.6。请仔细阅读tutorial。使用旧版本,您只能使用上述两个选项中的第二个选项。您可能希望尽快切换到2.0或2.1。