看看这两个代码。
以下代码可以正常使用。
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);
^
答案 0 :(得分:8)
您不能通过将&
应用于名称来创建指向成员函数的指针。您需要完全合格的成员:&MainM::someFunction
。
并通过传递this
,例如
#include <thread>
struct MainM
{
void someFunction() {
}
void main()
{
std::thread th(&MainM::someFunction, this);
}
};
int main()
{
MainM m;
m.main();
}