-1
こんにちは、Qtプログラム内でC++ 11スレッドを実装する際に問題が発生しています。スレッドと通信するためにデータ構造を使用していますが、Qtクラス内でスレッドを作成することはできません。私はまた、メインの内側にスレッドを作成することは許可されていません。私が取得しているエラーは、std :: invoke:一致するオーバーロードされた関数が見つかりませんでした。 Qtオブジェクト内のスレッド
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();
}
'dosmth'が' someapp :: someapp'と 'の#include後に定義される'欠けています。両方の素晴らしい場所が調査を開始する。 –
user4581301
この問題は、Qtの使用に依存しないというヒントがあります。 'QWidget'基本クラスを削除することができます。今は何が間違っているのが明確になるはずです。 –