Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > нужна помощь для создания класса


Автор: asmdzen 3.12.2010, 11:57
Привет всем!
Есть такая задача: нужно создать класс для буферного записывания файлов на диск, чтоб при создании обьекта этого класса создавался отдельный трэд для этого обьекта. Проблема заключается в том что я немогу послать нормальный указатель на функцию обьекта функции создания трэда, тоесть там используется параметр this который я не знаю как передать чтоб трэд начал работать от имени именно нового обьекта.
Помогите пожалуйста разобратся, самому никак неудается.
Заранее благодарен.

Автор: Estranged 3.12.2010, 12:16
А изнутри класса создать поток и передать ему this никак? Собственно, должна быть гарантия, что объект будет жить до тех пор, пока поток не отработает, иначе программа может пасть в неравной борьбе с ОС, почитав по запрещенным адресам, где был когда-то размещен объект.

Автор: asmdzen 3.12.2010, 13:00
написал дополнительную функцию в классе типа 
Код

void* new_thread(void *obj_ptr)
{
myclass* this_ptr = (myclass*) obj_ptr;
this_ptr->my_thread_func();
}


она статическая в классе и все же я немогу передать указатель на нее функции создания потока, пишет чтото типа can't convert __thiscall to __cdecl или чтото в  этом роде, тоесть даже если функция статическая я все еще немогу передать нормальный указатель на нее.

Автор: xvr 3.12.2010, 13:19
Цитата(asmdzen @  3.12.2010,  13:00 Найти цитируемый пост)
пишет чтото типа can't convert __thiscall to __cdecl
Ну так и сделайте ее __cdecl:
Код

static __cdecl void* new_thread(void *obj_ptr)

Цитата(asmdzen @  3.12.2010,  13:00 Найти цитируемый пост)
тоесть даже если функция статическая я все еще немогу передать нормальный указатель на нее.
Можете.


Автор: asmdzen 3.12.2010, 13:47
спасибо всем за помощь, это была моя ошибка - передавал указатель не на ту функцию, которая была не static.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)