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

时间:2018-04-23 19:46:25

标签: c++ c++11

我遇到了这个错误的问题,我根本不知道如何解决这个问题,如何在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;
}

1 个答案:

答案 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函数不是静态的(如果没有看到您的头文件,我无法判断它是否正确)。