die*_*rod 0 c++ multithreading class non-static
我正在尝试用C ++编写基本的游戏代码。我有一个名为player的类,具有一个名为moveLeft()的函数;它会持续监视我要在单独线程中运行的“ a”获取。
以我认为的方式来称呼它。我现在知道这是因为它是一个非静态函数,但是我不确定现在如何执行此操作。我正在使用<thread>库。
#pragma once
class player
{
public:
player(); // Constructor
~player(); // Destructor
void moveLeft();
void moveRight();
void jump(double);
int getHealth();
double get_x_position();
double get_y_position();
double get_x_momentum();
double get_y_momentum();
bool getGrounded();
void setHealth(int);
void set_x_position(double);
void set_y_position(double);
void set_x_momentum(double);
void set_y_momentum(double);
void setGrounded(bool);
private:
int health;
bool grounded;
double x_position;
double y_position;
double x_momentum;
double y_momentum;
};
Run Code Online (Sandbox Code Playgroud)
void player::moveLeft()
{
while (true)
{
while (GetKeyState(97))
{
if (grounded)
{
x_momentum -= .01;
}
else
{
x_momentum -= 0.07;
}
x_position += x_momentum;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我以为我应该设置它。
thread t1(&player::moveLeft);
t1.detach();
Run Code Online (Sandbox Code Playgroud)
如果要从类的成员函数启动线程,则可能正在寻找
thread t1(&player::moveLeft, this);
t1.detach();
Run Code Online (Sandbox Code Playgroud)
包含this指针的原因是每个成员函数都有一个隐藏的参数,即与之关联的对象的指针。this上面的代码中是一个player*。当然,您可以使用其他任何指针player,而不必使用this。无论您指向什么对象,成员函数都会在其体内将其视为“此对象”。
| 归档时间: |
|
| 查看次数: |
1259 次 |
| 最近记录: |