'runThread'未在此范围内声明。

'runThread' was not declared in this scope.

本文关键字:声明 范围内 runThread      更新时间:2023-10-16

我对该错误有问题,我实际上不知道如何解决此问题,如何在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功能不是静态的(我无法确定它是否在不看到标头文件的情况下是现在(。