SFML 线程错误

SFML threading error

我和一个朋友正在制作一个简单的多人游戏来练习我们的编码。不幸的是我们遇到了一个问题。 SFML 线程系统(未使用 std::thread 因为我的编译器尚不支持它)给我一个错误。

||=== Build: Debug in Clear Void (compiler: GNU GCC Compiler) ===| C:\Users\Name\Documents\Coding\SFML work\Clear_Void\src\GameScreen.cpp||In constructor 'GameScreen::GameScreen()':|

C:\Users\Name\Documents\Coding\SFML work\Clear_Void\src\GameScreen.cpp|9|error: ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function. Say '&GameScreen::startThread' [-fpermissive]|

C:\SFML-TDM471x32\include\SFML\System\Thread.inl||In instantiation of 'void sf::priv::ThreadFunctor::run() [with T = void (GameScreen::*)()]':|

C:\Users\Name\Documents\Coding\SFML work\Clear_Void\src\GameScreen.cpp|53|required from here|

C:\SFML-TDM471x32\include\SFML\System\Thread.inl|39|error: must use '.' or '->' to call pointer-to-member function in '((sf::priv::ThreadFunctor)this)->sf::priv::ThreadFunctor::m_functor (...)', e.g. '(... -> ((sf::priv::ThreadFunctor*)this)->sf::priv::ThreadFunctor::m_functor) (...)'|

||=== Build failed: 2 error(s), 2 warning(s) (0 minute(s), 4 second(s)) ===|

这是我的代码: GameScreen.h

class GameScreen : public Screen
{
public:
    GameScreen();

    void handleInput(sf::RenderWindow&) override;
    void update(sf::RenderWindow&, sf::View&) override;
    void render(sf::RenderWindow&) override;

    void startThread();


private:
    sf::Vector2f moveVal;
    Network network;
    Events eventManager;

    Map m_map;

    sf::Thread networkThread;
};

GameScreen.cpp(相关部分)

GameScreen::GameScreen()
: networkThread(&startThread)
{
    network.Connect();
}

我查看了 SFML 线程教程,根据它们,应该可以。请帮忙。

startThread 应该是静态的。一般来说,线程函数不能调用非静态成员函数。