Class und std :: async auf Klassenmitgliedern in C ++

Ich versuche, ein Klassenmitglied zu schreiben, das mehrere Male gleichzeitig ein anderes Klassenmitglied aufruft.

Ich habe ein einfaches Beispiel für das Problem geschrieben und kann es nicht einmal kompilieren. Was mache ich falsch mit dem Aufruf von std :: async? Ich denke, das Problem wäre, wie ich die Funktion übergebe.

#include <vector>
#include <future>
using namespace std;
class A
{

int a,b;
public: 
A(int i=1, int j=2){ a=i; b=j;} 

std::pair<int,int> do_rand_stf(int x,int y)
{
    std::pair<int,int> ret(x+a,y+b);
    return ret;
}

void run()
{
    std::vector<std::future<std::pair<int,int>>> ran;
    for(int i=0;i<2;i++)
    {
        for(int j=0;j<2;j++)
        {
            auto hand=async(launch::async,do_rand_stf,i,j);
            ran.push_back(hand);    
        }
    }
    for(int i=0;i<ran.size();i++)
    {
        pair<int,int> ttt=ran[i].get();
        cout << ttt.first << ttt.second << endl;
    } 
}
};
int main()
{
A a;
a.run();
}

Zusammenstellung:

g++ -std=c++11 -pthread main.cpp 

Antworten auf die Frage(2)

Ihre Antwort auf die Frage