2016-11-23 15 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

좋아, 오버로드에 대한이 작동합니까 : 무효 hello (QString 이름, int 나이) {..} 및 무효 안녕 (QString 이름) {..} 너무? –

+0

ok 나 자신을 알아 냈어. 정적 멤버 대신 함수 앞의 네임 스페이스를 사용해야했다. –