无法将类成员函数传递给另一个函数(std::thread::thread)
Posted
技术标签:
【中文标题】无法将类成员函数传递给另一个函数(std::thread::thread)【英文标题】:Cannot pass class member-function to another function(std::thread::thread) 【发布时间】:2013-09-18 18:38:15 【问题描述】:看看这两个代码。
下面的代码可以正常工作。
void someFunction ()
// Some unimportant stuff
MainM::MainM(QObject *parent) :
QObject(parent)
std::thread oUpdate (someFunction);
此代码抛出错误:
void MainM::someFunction () //as a class member
MainM::MainM(QObject *parent) :
QObject(parent)
std::thread oUpdate (someFunction);
错误:
error: no matching function for call to 'std::thread::thread(<unresolved overloaded function type>)'
std::thread oUpdate (someFunction);
^
【问题讨论】:
Start thread with member function 的可能重复项 - 您是否尝试过搜索现有答案? @JonathanWakely 是的,对不起。它不仅与 std::thread 相关,所以... 【参考方案1】:您不能通过将&
应用于名称来创建指向成员函数的指针。您需要完全合格的成员:&MainM::someFunction
。
并且还将它绑定到一个实例,通过传递this
,例如
#include <thread>
struct MainM
void someFunction()
void main()
std::thread th(&MainM::someFunction, this);
;
int main()
MainM m;
m.main();
【讨论】:
以上是关于无法将类成员函数传递给另一个函数(std::thread::thread)的主要内容,如果未能解决你的问题,请参考以下文章
如何将带有 args 的成员函数作为参数传递给另一个成员函数?