Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ SFML线程错误_C++_Multithreading_Gcc_Sfml - Fatal编程技术网

C++ SFML线程错误

C++ SFML线程错误,c++,multithreading,gcc,sfml,C++,Multithreading,Gcc,Sfml,我和一个朋友正在做一个简单的多人游戏来练习我们的编码。不幸的是,我们遇到了一个问题。SFML线程系统(没有使用std::thread,因为我的编译器还不支持它)给了我一个错误 ||===构建:在清空中调试(编译器:GNU GCC编译器)===| 构造函数“GameScreen::GameScreen()”中的C:\Users\Name\Documents\Coding\SFML work\Clear_Void\src\GameScreen.cpp || C++:\用户\name \文档\编码\

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

||===构建:在清空中调试(编译器:GNU GCC编译器)===| 构造函数“GameScreen::GameScreen()”中的C:\Users\Name\Documents\Coding\SFML work\Clear_Void\src\GameScreen.cpp ||

C++:\用户\name \文档\编码\ sfML工作\ CurryValue\Src\GAMESCRE.CPP 9错误:ISO C++禁止接受不合格或括号化的非静态成员函数的地址,以形成指向成员函数的指针。说“&GameScreen::startThread”[-fpermissive]|

C:\SFML-TDM471x32\include\SFML\System\Thread.inl | |在“void sf::priv::ThreadFunctor::run()[with T=void(游戏屏幕::*)()]”的实例化中:|

C:\Users\Name\Documents\Coding\SFML work\Clear\u Void\src\GameScreen.cpp | 53 |此处为必填项|

C:\SFML-TDM471x32\include\SFML\System\Thread.inl | 39 |错误:必须使用“.”或“->”来调用“((sf::priv::ThreadFunctor)this)->sf::priv::ThreadFunctor::m_functor(…)”中指向成员函数的指针,例如“(…->”((sf::priv::ThreadFunctor*)this)->sf::priv::ThreadFunctor::m_functor)(…)”|

||==生成失败:2个错误,2个警告(0分钟,4秒))===|

这是我的密码: 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(相关章节)


我查看了SFML线程教程,根据他们的说法,应该可以。请帮助。

开始线程应该是静态的。通常,线程函数不能调用非静态成员函数。

startThread
应该是静态的。并且使用更新版本的gcc。好吧,你可能会在修复它的同时给出一个答案
GameScreen::GameScreen()
: networkThread(&startThread)
{
    network.Connect();
}