Фукция класса как тред
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Фукция класса как тред - 2007-07-31 14:14:33.433333
|
|
|
ChooseDeath
Сообщений: 19
Оценки: 0
Присоединился: 2007-07-30 15:13:05.753333
|
Нжно запустить фунцию Thread из класса как тред void Class::Start() { CreateThread(0, 0, Thread, 0, 0, 0); } DWORD CALLBACK Class::Thread(LPVOID Param) { …. } class Class{ void Start(); DWORD CALLBACK Thread(LPVOID Param); }; Компилер матюкаеца, типа не может преобразовать DWORD (CALLBACK (_closure))(void*) в DWORD (CALLBACK)(void*) Мне нужно шоб ф-ия для запуска в треде находилась в теле класса, но к прототипу ф-ии в классе добавляется какое-то _closure … Пишу прогу, и застрял на этом месте, помогите плизз! PS Вопрос малость не в тему но всё же: Я расшарил папку, в разрешениях поставил юзера, но как мне зайти с другого компа на эту шару под тем юзером ? Если заходить просто \\комп пишет нет прав… Мож кто знает ?
|
|
|
RE: Фукция класса как тред - 2007-07-31 19:22:26.133333
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
значица так. Class::Thread – это ведь не static функция класса? значит ей должен передаваться неявный параметр – указатель this. соответственно функция CreateThread, которой ты передаёшь указатель на функцию Class::Thread должна вызывать её как метод класса. она этого не умеет по определению. возможный выход #1 void Class::Start()
{
CreateThread(0, 0, start_this, this, 0, 0);
}
void Class::start_this (LPVOID param)
{
Class *this_ = (Class*)param; /* тут возможно стоит приводить способом более C++'ным. типа static_cast и все дела. */
this_->Thread ();
}
DWORD CALLBACK Class::Thread()
{
....
} возможный выход #2 вместо того, чтобы создавать заглушки типа start_thread вручную, воспользоваться библиотечкой libsigc++, и писать несколько короче. примеров не будет, ибо наизусть я не помню, а в туторе к libsigc++ всё это описано в подробностях.
|
|
|
|
|