1
現在、コードを並列化しようとしていますので、QtConcurrent::run
を使用しています。問題は実行する関数を選択できないことです。オーバーロードされた関数でQtConcurrent :: runを使用する方法
オーバーロードされた関数で実行する方法がありますか、またはいくつかの回避策がありますか?あなただけのstatic_cast
ポインタを確保することができます
現在、コードを並列化しようとしていますので、QtConcurrent::run
を使用しています。問題は実行する関数を選択できないことです。オーバーロードされた関数でQtConcurrent :: runを使用する方法
オーバーロードされた関数で実行する方法がありますか、またはいくつかの回避策がありますか?あなただけのstatic_cast
ポインタを確保することができます
は、プロセス、代わり
void hello(QString name)
{
qDebug() << "Hello" << name << "from" << QThread::currentThread();
}
void hello(int age)
{
qDebug() << "Hello" << age << "from" << QThread::currentThread();
}
int main(int argc, char **argv)
{
QApplication app(argc, argv);
QFuture<void> f1 = run(static_cast<void(*)(QString)>(hello), QString("Alice"));
QFuture<void> f2 = run(static_cast<void(*)(int)>(hello), 42);
f1.waitForFinished();
f2.waitForFinished();
}
または右のいずれかへのポインタを取得するにはあいまいさがありません。
大丈夫ですが、void hello(QString name、int age){..}やvoid hello(QString name){..}も同じです。 –
OK自分で考えましたが、それを呼び出す静的メンバーではなく、関数の前で名前空間を使用するだけでした –