2017-01-05 15 views
3

Я пытаюсь понять потоки в C++, но я не знаю, как решить эту проблему.THREAD ERROR: недопустимое использование нестатической функции-члена

Я хочу назвать две нити, чтобы запустить функцию под названием «СОЗДАЕТ», но я получаю эту ошибку:

error: invalid use of non-static member function

Я читал другие вопросы по этой теме, но я действительно не понимаю, как сделать мой код работает.

Может ли кто-нибудь объяснить мне, что я делаю неправильно, и попытаться помочь найти решение?

test_class.cpp

void test_class::generateS(){ 

    map1=new multimap<double,vector<int>>; 
    map2=new multimap<double,vector<int>>; 

    thread thread_1(createS, 0, nCells/2, map1); 
    thread thread_2(createS, nCells/2, nCells, map2); 

    thread_1.join(); 
    thread_2.join(); 
} 

void test_class::createS(int startP, int endP, Costs *mapPointer){ 
    //i do some stuff 
} 

test_class.h

void createS(int start, int end, Costs *mapPointer); 
void generateS(); 
+0

Попробуйте создать класс CreateS() static. –

ответ

1
thread thread_1(&test_class::createS, this, 0, nCells/2, map1); 
thread thread_2(&test_class::createS, this, nCells/2, nCells, map2); 

Примечание: если createS не зависит от состояния объекта, лучше сделать его членом static класса и звоните так, как вы это делали.

 Смежные вопросы

  • Нет связанных вопросов^_^