我希望能够定义一个类,其中包含一些数据成员和一个可以访问这些私有数据成员的函数。
然后,我想要一个公共函数,它创建一些线程,这些线程会操作该类的数据成员。但是我的代码编译起来有些困难。
不用担心互斥量或数据保护,这不会成为问题,因为这只是一些示例代码进行测试。
class foo {
public:
void make_foo_func_threads();
private:
void foo_func();
char private_data;
std::vector<std::thread> some_threads;
}
void foo::foo_func() {
while(1) {
private_data = 'A';
}
}
void foo::make_foo_func_thread() {
for(...) some_threads.push_back(std::thread(foo_func));
for(...) some_threads.join();
}
编译器给出了错误提示:。显然,第一个参数的转换无法匹配'no matching call to std::thread::thread()'
<未解决的重载函数类型>
到void (foo::*&&)'
。嗯,除了编译器很难理解如何解析foo_func之外,我还不知道这意味着什么。我该怎么样才能帮助编译器理解我的意图,让它不再产生任何错误?毫无疑问,我写的代码是不合法的,如果是这种情况,有人可以向我解释一下吗?谢谢!
this
?我的意思是=some_threads.push_back(std::thread(&foo::foo_func, this));
- Saeed Masoomi