2016-11-23 17 views
1

現在、コードを並列化しようとしていますので、QtConcurrent::runを使用しています。問題は実行する関数を選択できないことです。オーバーロードされた関数でQtConcurrent :: runを使用する方法

オーバーロードされた関数で実行する方法がありますか、またはいくつかの回避策がありますか?あなただけのstatic_castポインタを確保することができます

答えて

3

は、プロセス、代わり

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(); 
} 

または右のいずれかへのポインタを取得するにはあいまいさがありません。

+0

大丈夫ですが、void hello(QString name、int age){..}やvoid hello(QString name){..}も同じです。 –

+0

OK自分で考えましたが、それを呼び出す静的メンバーではなく、関数の前で名前空間を使用するだけでした –

関連する問題