0

全て

私はクラスを持っています:

class someClass
{
 public:
    vector<int> someOperation(int start, int end)
    {
         // do something...
    }
}

そして主な機能:

int main()
{
    someClass obj;

    std::packaged_task<vector<int>(int, int)> task(&someClass::someOperation);

    std::thread t1 = std::thread(std::move(task), &obj, 0, 200);   // Error happens here
    std::thread t2 = std::thread(std::move(task), &obj, 201, 400);
    std::thread t3 = std::thread(std::move(task), &obj, 401, 600);

    t1.join();
    t2.join();
    t3.join();

    return 0;
}

このコードは、データの異なる部分に対して同じ操作を実行する 3 つのスレッドを作成できると思います。ただし、スレッド t1 の定義では、コンパイラは次のエラーをポップします。

error C2046: term does not evaluate to a function taking 3 arguments

何が間違っているのか、どうすれば正しく行うことができますか?

よろしくお願いします。

長いです

4

1 に答える 1