Take a look at these 2 codes.
The code below works fine.
void someFunction () {
// Some unimportant stuff
}
MainM::MainM(QObject *parent) :
QObject(parent)
{
std::thread oUpdate (someFunction);
}
This code throws an error:
void MainM::someFunction () { //as a class member
}
MainM::MainM(QObject *parent) :
QObject(parent)
{
std::thread oUpdate (someFunction);
}
Error:
error: no matching function for call to 'std::thread::thread(<unresolved overloaded function type>)'
std::thread oUpdate (someFunction);
^
You can't create a pointer-to-member-function by applying &
to just the name. You need the fully qualified member: &MainM::someFunction
.
And also bind it to an instance, by passing this
, e.g.
#include <thread>
struct MainM
{
void someFunction() {
}
void main()
{
std::thread th(&MainM::someFunction, this);
}
};
int main()
{
MainM m;
m.main();
}