Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Satansoft
8 / 8 / 1
Регистрация: 27.02.2012
Сообщений: 725
#1

Обращение потока к функции-члену класса - C++

19.11.2014, 23:34. Просмотров 746. Ответов 22
Метки нет (Все метки)

Есть Класс MainWindow, функцией-членом которой выступает Reader(), при попытке обратиться поток к данной функции-члену из main'a через экземпляр класса w

C++
1
2
3
4
for(i=0;i<M;i++)
        {
           RE[i] = std::thread(w.Reader);;
        }
сыпется ошибка

no matching function for call to 'std::thread::thread(<unresolved overloaded function type>)
возможно функция thread не понимает такое обращение, тогда как понимает?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2014, 23:34
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Обращение потока к функции-члену класса (C++):

Обращение к приватному члену класса внутри пространства имён - C++
Здравствуйте. Вот у меня есть код: #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;vector&gt; #include &lt;string&gt; using namespace...

Доступ к функции-члену другого класса - C++
Каким образом можно получить доступ из одного класса к функции члену другого класса???

Не хватает прав доступа к закрытому члену класса из дружественной функции - C++
Здравтсвуйте. Есть класс LifeMap. файл LifeMap.hpp #ifndef LIFEMAP_HPP #define LIFEMAP_HPP /* * LifeMap - класс для...

Обращение к члену protected - C++
Добрый день, помогите разобраться Обращение к члену protected, сообщается ошибкой Код класса: #include &lt;iostream&gt; #include &lt;string&gt;...

Обращение к члену структуры - C++
В чем разница между: a-&gt;b и a.b

Обращение к члену связного списка - C++
Прошу помощи в решении Стоит задача обращения к члену связного списка(того списка что выводится на экран файлового менеджера),затем с...

22
Max Dark
шКодер самоучка
1866 / 1666 / 605
Регистрация: 09.10.2013
Сообщений: 3,707
Записей в блоге: 6
Завершенные тесты: 2
20.11.2014, 01:56 #16
Так перенесите массивы потоков в класс...
0
Satansoft
8 / 8 / 1
Регистрация: 27.02.2012
Сообщений: 725
20.11.2014, 02:08  [ТС] #17
Цитата Сообщение от Cra3y Посмотреть сообщение
Так перенесите массивы потоков в класс...
засунуть их в функцию внутри класса и из неё их вызывать?

Добавлено через 6 минут
Напрямую создавать треды снова не выходит, хоть они и в одном классе

C++
1
2
3
4
5
 for(i=0;i<N;i++)
        {
           WR[i] = std::thread(Writer);
 
        }
no matching function for call to 'std::thread::thread(<unresolved overloaded function type>)
0
Max Dark
шКодер самоучка
1866 / 1666 / 605
Регистрация: 09.10.2013
Сообщений: 3,707
Записей в блоге: 6
Завершенные тесты: 2
20.11.2014, 06:09 #18
C++
1
std::thread(&decltype(*this)::Reader, this);
Добавлено через 3 минуты
Просто запомните, что метод класса это функция со скрытым параметром - объектом к которому применяется данный метод
0
Satansoft
8 / 8 / 1
Регистрация: 27.02.2012
Сообщений: 725
20.11.2014, 18:06  [ТС] #19
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
int call_f()
    {
    std::thread WR[N];
    std::thread RE[M];
    int i;
 
        for(i=0;i<N;i++)
        {
           WR[i] = std::thread(&decltype(*this)::Writer, this);
 
        }
        for(i=0;i<M;i++)
        {
           RE[i] = std::thread(&decltype(*this)::Reader, this);
 
        }
        for(i=0;i<N;i++)
        {
            WR[i].join();
        }
        for(i=0;i<M;i++)
        {
            RE[i].join();
        }
        return 0;
    }
decltype evaluates to 'MainWindow&', which is not a class or enumeration type
Засунув в один класс, напрямую не обратиться к методу, уже свинство... использовал ваш метод доступа, так через указатель this даже не считает его классом...где ошибка-то?
0
Max Dark
шКодер самоучка
1866 / 1666 / 605
Регистрация: 09.10.2013
Сообщений: 3,707
Записей в блоге: 6
Завершенные тесты: 2
20.11.2014, 18:08 #20
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
std::thread(&MainWindow::Reader, this)
1
Satansoft
8 / 8 / 1
Регистрация: 27.02.2012
Сообщений: 725
20.11.2014, 18:13  [ТС] #21
Cra3y, а ежели теперь вызвать метод call_f() из кнопки (дочернего класса), использовать такое же обращение?
0
Max Dark
шКодер самоучка
1866 / 1666 / 605
Регистрация: 09.10.2013
Сообщений: 3,707
Записей в блоге: 6
Завершенные тесты: 2
20.11.2014, 18:21 #22
в общем случае
C++
1
std::thread(&имя_класса::имя_метода, указатель_на_объект);
Добавлено через 1 минуту
c this можно внутри класса которому принадлежит вызываемый метод
0
Satansoft
8 / 8 / 1
Регистрация: 27.02.2012
Сообщений: 725
20.11.2014, 18:28  [ТС] #23
Cra3y, это форма обращения треда к методам в пределах одного класса. Класс находится в mainwindow.h, а дочерние классы (кнопки, формы) объявляются в mainwindow.cpp, как из одной из этих кнопок, обратиться к методу класса, а именно Call_f()? Необходимо создание тредов по нажатию на кнопку.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2014, 18:28
Привет! Вот еще темы с ответами:

Обращение к статической функции класса - C++
Всем привет! есть Number.h: using namespace std; #pragma once class Number { public: Number(void);

Как обратиться к члену класса - C++
Здравствуйте! Есть такой код: class ClassA { ... public: int t; }; class ClassB:public ClassA

Не могу получить доступ к члену класса - C++
Недавно начал изучать C++ и SDL и появилась проблема с кодом. Я могу создать поверхность(см. код) с помощь thisFunctionWoks, но не могу...

Перегрузка оператора доступа к члену класса - C++
Как осуществляется перегрузка оператора доступа к члену класса? Если можно, то приведите пример


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru