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