我一直在努力学习如何使用多线程,但我无法正确创建线程对象。我有一个名为task的函数的对象,但是当我添加函数和参数时,它表示构造函数不接受它。顺便说一句,我使用visual studio作为我的IDE。
这是我的主要文件:
#include <iostream>
#include <thread>
#include "Task.h"
using namespace std;
int main(int argc, char** argv)
{
Task t;
thread t1(t.task, 1);
t1.join;
return 0;
}
任务对象的类:
#include "Task.h"
#include <iostream>
using namespace std;
Task::Task()
{
}
Task::~Task()
{
}
void Task::task(int x) {
cout << "In Thread " << x << '\n';
}
错误:Error: no instance of constructor"std::thread::thread" matches the argument list
argument types are: (<error-type>, int)
更新:
所以我放入thread t1(&Task::task, &t, 1);
并摆脱了t1.join
,但现在我遇到了一个新问题。程序编译并运行,但是当它运行时,它显示&#34;在线程1&#34;在控制台中,另一个窗口显示:
Debug Error!
abort() has been called
(Press retry to debug the application)