我遇到了这个错误的问题,我根本不知道如何解决这个问题,如何在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;
}
答案 0 :(得分:0)
我认为更好的方法来做你想要做的事情就是去除Snake::runThread
函数中的参数(意味着你还应该删除函数中对它的引用,例如{{ 1}}应该成为snake->MoveA();
)。
然后,在您的main函数中,您可以使用
启动两个蛇形线程 MoveA();
和
std::thread thread1 = std::thread(&Snake::runThread, snake1);
运行线程函数中的现有std::thread thread2 = std::thread(&Snake::runThreadB, snake2);
指针参数是多余的,因为您已经需要传入Snake
的实例以通过Snake
构造函数运行该函数。如果您采用这种方法,请确保您的std::thread
函数不是静态的(如果没有看到您的头文件,我无法判断它是否正确)。