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

Оболочка для потков-методов классов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Программа для ввода строки от блондинки http://www.cyberforum.ru/cpp-beginners/thread503244.html
Привет всем! Вот решила начать изучать язык программирования С++, но не все пока получается... Вот дали задание...написать программу, чтобы можно было вводить строку... Если строка начинается с...
C++ ошибка при компиляции проги, использущей шаблоны классов Возникла ошибка при компиляции проги, использующей шаблоны. Ошибка - undefined symbol /*...*/ in module main.cpp (линковщик не может найти реализацию функции класса) Пусть есть 3 файла... http://www.cyberforum.ru/cpp-beginners/thread503241.html
Потоки и выделение памяти в куче C++
Подскажите, кто знает, какие есть тонкости при выделении памяти в куче (new) в потоках отличных от главного. У меня возникают исключения при (или после) выделении памяти оператором new. Причём не в...
C++ Не могу найти ошибку в исходнике.
Привет програмёры.Я учусь програмировать на С++ и для закрепления начала изучения функций и массивов написал небольшую програмку massiv, и она компилируется, но работает неправильно(после ввода чисел...
C++ _tsetlocale(LC_CTYPE, _T("rus_rus")) http://www.cyberforum.ru/cpp-beginners/thread503108.html
CString cfn; ... cfn.Left(3).CompareNoCase(L"ИЗМ") == 0 Почему это условие не выполняется при cfn равное, например, "изм5"? Пробовал также перед условием писать следующее: cfn.MakeUpper();...
C++ Как получить все папки и файлы хранящиеся на диске? Здравствуйте! Помогите пожалуйста в написании кода, с помошью которого можно получить все папки и файлы хранящиеся на диске D: С уважением! подробнее

Показать сообщение отдельно
arist
0 / 0 / 0
Регистрация: 14.02.2011
Сообщений: 100

Оболочка для потков-методов классов - C++

04.06.2012, 09:57. Просмотров 1262. Ответов 3
Метки (Все метки)

Задача: написать удобную оболочку для реализации многопоточных классов.
Пишу:
ThreadWrap.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#ifndef _ThreadWrap_h_
#define _ThreadWrap_h_
 
#define THREAD_DECLARE(method) DWORD WINAPI _##method(VOID *); 
                   HANDLE method(VOID *);
 
#define THREAD_BEGIN(theclass, method) 
    HANDLE theclass::method(VOID *pv){ 
        HANDLE h = CreateThread(NULL, 0, _##method, pv, 0, NULL); 
        return h; 
    } 
    DWORD WINAPI theclass::_##method(VOID *pv){
 
#define THREAD_END }
 
#endif _ThreadWrap_h_
main.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "ThreadWrap.h"
 
class test{
public:
    THREAD_DECLARE(f)
};
 
THREAD_BEGIN(test, f)
    return 0;
THREAD_END
 
int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}
Наблюдается две проблемы:
1. В Class View методы f и _f отсутствуют, а присутствует метод THREAD_DECLARE(f):
test
|
-- THREAD_DECLARE(f)

2. На строке THREAD_BEGIN(test, f) выдаётся ошибка:
error C2664: 'CreateThread' : cannot convert parameter 3 from 'DWORD (void *)' to 'LPTHREAD_START_ROUTINE'
None of the functions with this name in scope match the target type

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