#include <iostream>
#include <thread>
#include <chrono>
class task {
public:
void operator()(std::string str) {
std::cout << "str is " << str << std::endl;
}
};
int main(){
std::thread t1(task());
t1.join();
return 0;
}
语法错误:编译器把t1当作了函数指针。
解决方法:
- 用括号括起来 :
#include <iostream>
#include <thread>
#include <chrono>
class task {
public:
void operator()(std::string str) {
std::cout << "str is " << str << std::endl;
}
};
int main(){
std::thread t1((task()));
t1.join();
return 0;
}
- 使用初始化列表:
#include <iostream>
#include <thread>
#include <chrono>
class task {
public:
void operator()(std::string str) {
std::cout << "str is " << str << std::endl;
}
};
int main(){
std::thread t1{task()};
t1.join();
return 0;
}