嗨,我在Qt程序中实现C ++ 11线程时遇到问题。我使用数据结构与线程进行通信,但我不能在Qt类中创建一个线程。我也不允许在main中创建线程。我得到的错误是std :: invoke:找不到匹配的重载函数。
class someapp : public QWidget {
Q_OBJECT
public:
someapp(QWidget * parent = nullptr);
private:
somedatastructure *a;
};
someapp::someapp(QWidget * parent) : QWidget(parent) {
a = new somedatastructure;
std::thread t(&dosmth::doingsmth, a);
/* some UI stuff*/
}
class dosmth{
public:
void doingsmth(somedatastructure &x);
};
int main(int argc, char *argv[]){
QApplication app(argc, argv);
someapp x;
x.show();
return app.exec();
}
答案 0 :(得分:0)
第一个问题是,你是在混淆指针和引用(我认为这是一个错字)
第二个问题是,线程需要使用对象的实例启动,或者作为静态调用启动,如下所示:
static void doingsmth(somedatastructure *x)