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

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

Восстановить пароль Регистрация
 
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
23.08.2012, 16:12     Можно ли создать поток для нестатического метода класса? #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++ Можно ли в VS2010 автоматически создать заготовку для ф-ии и класса ?
C++ Можно ли в DLL создать поток?
C++ Доступ из нестатического метода к статическому члену класса
C++ Как можно еще создать массив объектов класса
Создать отдельный управляемый поток для бесконечного процесса C++
C++ Функция - метода класса для определения совпадения имени человека с некоторым заданным
C++ Определение класса leverage и метода для доступа к закрытому полю
Создать для класса виртуальный метод, возвращающий уникальный идентификатор класса C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 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     Можно ли создать поток для нестатического метода класса?
Ответ Создать тему
Опции темы

Текущее время: 09:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru