我希望能够定义一个具有一些数据成员的类,以及一个可以访问这些数据成员的函数,这些数据成员是私有的。
然后我想要一个公共函数,它创建一些线程,这些线程对类的数据成员进行操作。我在编译我的代码时遇到了一些麻烦。
不用担心互斥锁或数据保护,这不会成为问题,因为这只是一些用于测试的示例代码。
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();
}
编译器给了我错误:
'没有对 std::thread::thread() 的匹配调用'
<unresolved overloaded function type>
显然,参数 1 从到'没有已知的转换void (foo::*&&)'
。
嗯,是的,除了编译器无法理解如何解析 foo_func 之外,我不知道这意味着什么——我想。
我如何帮助编译器理解我正在尝试做的事情,这样它就不会再因为任何错误而困扰我了。毫无疑问,我编写的代码是不合法的,如果是这样的话,有人可以向我解释为什么会这样。谢谢!