Хорошо, поэтому я пытаюсь использовать std :: future в проекте, но std :: asyn c Я использую его, постоянно повторяя, что аргументов слишком много. Я попытался понять, правильно ли я понял шаблон, но ничего плохого не пришло ко мне ... Вот вызов:
QVector<MyMesh::Point> N1;
QVector<MyMesh::Point> N2;
future<QVector<MyMesh::Point>> FN1 = async(launch::async, rangeSearch, &mesh, vit->idx(), diagBoundBox*0.02);
future<QVector<MyMesh::Point>> FN2 = async(launch::async, rangeSearch, &mesh, vit->idx(), diagBoundBox*0.02*2);
N1 = FN1.get();
N2 = FN2.get();
также используется метод rangeSearch:
QVector<MyMesh::Point> rangeSearch(MyMesh *_mesh, int pid, float range);
См. что-то не так?
РЕДАКТИРОВАТЬ: Вот минимальный воспроизводимый пример, извините за первый.
#include <future>
class Class
{
public:
void A();
int F(int a, int b, int c);
};
int Class::F(int a, int b, int c){
return a+b+c;
}
void Class::A(){
int N1;
int N2;
std::future<int> FN1 = std::async(std::launch::async, F, 1, 2, 3);
std::future<int> FN2 = std::async(std::launch::async, F, 1, 2, 3);
N1 = FN1.get();
N2 = FN2.get();
}
int main()
{
Class O;
O.A();
}
Также ошибка:
main.cpp: In member function ‘void Class::A()’:
main.cpp:18:69: error: invalid use of non-static member function ‘int Class::F(int, int, int)’
std::future<int> FN1 = std::async(std::launch::async, F, 1, 2, 3);
^
main.cpp:11:5: note: declared here
int Class::F(int a, int b, int c){
^~~~~
main.cpp:19:69: error: invalid use of non-static member function ‘int Class::F(int, int, int)’
std::future<int> FN2 = std::async(std::launch::async, F, 1, 2, 3);
^
main.cpp:11:5: note: declared here
int Class::F(int a, int b, int c){
^~~~~