我正在尝试用 C++ 编写一个基本游戏。我有一个名为 player 的类,它有一个名为 moveLeft(); 的函数,它不断监视我想在单独线程中运行的“a”get。
按照我认为应该的方式调用它。我现在明白这是因为它是一个非静态函数,但我不确定现在该怎么做。我正在使用
库。
播放器类
#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;
};
向左移动() 函数
void player::moveLeft()
{
while (true)
{
while (GetKeyState(97))
{
if (grounded)
{
x_momentum -= .01;
}
else
{
x_momentum -= 0.07;
}
x_position += x_momentum;
}
}
}
我认为我应该如何设置它。
thread t1(&player::moveLeft);
t1.detach();
如果您从类的成员函数启动线程,您可能正在寻找
thread t1(&player::moveLeft, this);
t1.detach();
包含this
指针的原因是每个成员函数都有一个隐藏参数,即指向与其相关联的对象的指针。上面代码中的this
是一个player*
。当然,您可以使用任何其他指向 player
的指针,不一定是 this
。无论您指向什么对象,成员函数都会将其视为其主体内的“此对象”。
我是一名优秀的程序员,十分优秀!