void Game::game() { _beginthread(&Game::key_thread, this, NULL); _beginthread(&Game::timer_thread, this, NULL); Sleep(10000000000000000000); }这样修改之后仍然编译不通过请问是什么问题
时间: 2024-02-25 17:59:33 浏览: 68
解决error C2065: '_beginthreadex' :undeclared identifier
5星 · 资源好评率100%
根据你提供的信息,我猜测你可能遇到了函数指针类型不匹配的问题。`_beginthread`的第一个参数应该是一个函数指针,而`key_thread`和`timer_thread`是成员函数,需要通过类的对象来调用。
你可以将成员函数变为静态函数,或者使用`std::bind`或lambda表达式来将类的对象和成员函数绑定,例如:
```
void Game::game() {
_beginthread(&Game::key_thread_static, 0, this);
_beginthread(&Game::timer_thread_static, 0, this);
Sleep(10000000000000000000);
}
void Game::key_thread_static(void* arg) {
Game* game = static_cast<Game*>(arg);
game->key_thread();
}
void Game::timer_thread_static(void* arg) {
Game* game = static_cast<Game*>(arg);
game->timer_thread();
}
```
或者使用`std::bind`:
```
void Game::game() {
_beginthread(std::bind(&Game::key_thread, this, std::placeholders::_1), 0, NULL);
_beginthread(std::bind(&Game::timer_thread, this, std::placeholders::_1), 0, NULL);
Sleep(10000000000000000000);
}
```
这里使用了`std::placeholders::_1`来占位符,表示传入的参数不需要使用。
阅读全文