我正在尝试按照本教程http://www.cplusplus.com/reference/thread/thread/
创建新主题以下是我写的相关代码
Game.cpp:
bool somethingWasTrue = true;
if( x )
z = 0;
else if( y )
z = ResultOfSomething();
else
somethingWasTrue = false;
if( somethingWasTrue )
{
// code that uses z
}
Game.hpp:
Game :: Game (bool isDebug, bool startNew) {
// ...
std :: thread gameThread(Game :: tick);
}
void Game :: tick() {
std :: this_thread :: sleep_for(std :: chrono :: seconds (1));
funds += getIncomeRate();
}
我在编译时遇到的错误是
#ifndef Game_hpp
#define Game_hpp
#include <thread>
using namespace std;
class Game{
public:
// ...
Game (bool, bool);
void tick();
};
#endif /* Game_hpp */
我对C ++和模板一般不太熟悉,我真的不明白我的代码有什么问题。如果这是一个微不足道的问题,请事先道歉。
答案 0 :(得分:3)
你想:
std::thread gameThread(&Game::tick, this);
// ^^^ ^^^^
答案 1 :(得分:1)
由于包装到线程中的方法不是static
(而不是自由函数),因此需要为线程构造函数提供对类实例的引用。