'runThread'未在此范围内声明。
'runThread' was not declared in this scope.
我对该错误有问题,我实际上不知道如何解决此问题,如何在main.cpp中调用此功能。
snake.cpp
void Snake::runThread(Snake* snake)
{
char c;
while(c != 'q'){
timeout(50);
c = getch();
mx.lock();
clear();
drawBorder();
snake->moveA();
drawSnakes();
refresh();
mx.unlock();
}
}
main.cpp
int main() {
Snake *snake1;
Snake *snake2;
std::thread thread1 = std::thread(runThread, snake1);
std::thread thread2 = std::thread(runThreadB, snake2);
thread1.join();
thread2.join();
endwin();
return 0;
}
我认为做一个更好的方法是通过在 Snake::runThread
函数中摆脱参数(意味着您还应该在函数中删除其参考文献(,例如snake->MoveA();
应成为MoveA();
(。
然后,在您的主要功能中,您可以使用
启动两个蛇线 std::thread thread1 = std::thread(&Snake::runThread, snake1);
和
std::thread thread2 = std::thread(&Snake::runThreadB, snake2);
运行线程函数中的现有Snake
指针参数是冗余的,因为您已经需要在Snake
的实例中传递以通过std::thread
构造函数运行该函数。如果您要采用这种方法,请确保您的Snake::runThread
功能不是静态的(我无法确定它是否在不看到标头文件的情况下是现在(。
相关文章:
- 错误:未在此范围内声明'reverse'
- 错误:"imread"未在此范围内声明
- 我在范围内未声明的错误类有问题
- 未在此范围内声明错误 'xy'
- Socklen_t未在此范围内声明
- 错误:'[' 之前预期的非限定 id 和错误:'users'未在此范围内声明
- "Main"已在当前范围内声明
- c++ 变量在宏的扩展中没有在这个范围内声明
- C++ 在编译过程中 strtok 函数 Eclipse 说没有在范围内声明?
- 'num1'未在此范围内声明
- 在此范围内未声明错误"Clreol"
- 如何找到在本地范围内声明的变量的地址?
- 简化在 Pybind11 中为 C++ 模板类生成包装类:模板声明不能出现在块范围内
- NT状态未在此范围内声明
- 变量未在此范围内声明 数组线性搜索
- 包含文件中的 Typdef "未在此范围内声明"
- 'ClassName'和'ClassInstance'未在此范围内声明
- "ChaCha"尚未在此范围内使用Crypto++声明?
- C++ 中的类之间的数据重新循环 - 错误:'<class name>'未在此范围内声明
- 如何在类声明范围内使用“using space::function”