Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
#1

Можно ли создать поток для нестатического метода класса? - C++

23.08.2012, 16:12. Просмотров 379. Ответов 1
Метки нет (Все метки)

Можно ли создать поток для не статик метода класса?
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
27
28
29
30
31
32
33
34
#include <windows.h>
#include <stdio.h>
 
class MYCLASS
{
private :
    int num;
public :
    MYCLASS() : num(0) {}
    DWORD CALLBACK draw(LPVOID);
};
 
DWORD CALLBACK MYCLASS::draw(LPVOID lParam)
{
    for (int i=0; i<100; ++i)
        printf("%d ", num);
    return 0;
}
 
DWORD CALLBACK draw(LPVOID lParam)
{
    int num = 23;
    for (int i=0; i<100; ++i)
        printf("%d ", num);
    return 0;
}
 
void main()
{
    MYCLASS c;
    //HANDLE hThread = CreateThread(0, 0, &(MYCLASS::draw), 0, 0, 0);
    HANDLE hThread = CreateThread(0, 0, &draw, 0, 0, 0);
    WaitForSingleObject(hThread, INFINITE);
}
С обычной функцией прокатывает, а вот в классом никак не хочет.
p.s Так же не могу понять, почему третьим параметром можно указывать и &draw, и draw?
p.p.s Сделать функцию-обертку, которая будет вызываться потоком, а потом уже из неё будет вызнавана функция класса - не вариант


p.p.p.s А можно ли сделать то же самое, но со статический методом класса (хотя бы) ? : (
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2012, 16:12     Можно ли создать поток для нестатического метода класса?
Посмотрите здесь:

C++ Вызов метода класса без создания экземпляра класса.
C++ Можно ли в VS2010 автоматически создать заготовку для ф-ии и класса ?
C++ Можно ли в DLL создать поток?
Вызов метода внутреннего класса методом внешнего класса C++
C++ Доступ из нестатического метода к статическому члену класса
Поток из не статического метода C++
C++ Как можно еще создать массив объектов класса
Создать отдельный управляемый поток для бесконечного процесса C++
C++ Можно ли создать объект экспортируемого из DLL класса без лишних манипуляций?
C++ Функция - метода класса для определения совпадения имени человека с некоторым заданным
C++ Определение класса leverage и метода для доступа к закрытому полю
Обработка метода класса в зависимости от типа данного класса C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
23.08.2012, 16:18     Можно ли создать поток для нестатического метода класса? #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
nexen, Только такой вариант и сработает или юзать биндеры. Для std::thread.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <thread>
 
struct threaded
{
   void function() {  std::cout << "Hello" << std::endl; }
};
 
int main()
{
   threaded obj;
   std::thread thr(&threaded::function, obj);
}
Вообщем-то внутри вызывается std::bind.
Yandex
Объявления
23.08.2012, 16:18     Можно ли создать поток для нестатического метода класса?
Ответ Создать тему
Опции темы

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