0
我想编译下面的例子,我得到一个错误。下面是代码:为什么此C++线程示例不起作用?
class A {
private:
//variables
public:
A(int a,int b){
//assign variables
}
void C(){
// do something
}
int D(){
// do something
}
void E(){
}
};
int main(){
A* temp = new A(a,b);
temp->C;
std::thread t;
t(&A::D,A);
t.join();
temp->E;
return 0;
}
我收到以下错误,当我编译pthread
和std=c++11
标志上面的代码。以下是错误消息:
expected primary-expression before ‘)’ token
t(&A::D,A);
没有'#include'列表。在main()中,没有'a'。没有'b'。 'temp-> C;'没有意义。同样对于'temp-> E;''t'不是“可调用的”,即使它是“A”是一种类型,因此作为参数没有意义。抓取,走,然后*运行。这些错误都与线程无关。 – WhozCraig
“std :: thread”类型的对象没有'operator()',所以表达式't(...)'无效。试试'std :: thread t(A :: d,a);'? – Charlie
我已经抽象所有这些细节,以简化问题 – rajkiran