SFML:没有与Thread()匹配的函数

时间:2014-03-23 21:01:12

标签: c++ sfml

我尝试在游戏中使用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

2 个答案:

答案 0 :(得分:1)

thread.launch();

请注意小写。

以下是您感兴趣的文档:

http://www.sfml-dev.org/tutorials/2.0/system-thread.php

答案 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。