A friend and I are making a simple multiplayer game to practice our coding. Unfortunately we have encountered a problem. The SFML threading system (Not using std::thread because my compiler doesn't support it yet) is giving me an error.
||=== 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)) ===|
Here is my code: 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 (Relevant Section)
GameScreen::GameScreen()
: networkThread(&startThread)
{
network.Connect();
}
I checked the SFML threading tutorials and according to them, that should work. Please help.
startThreadshould be static. And use a newer version of gcc. - 1201ProgramAlarm