Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> нужна помощь для создания класса, каждый обьект = new thread 
V
    Опции темы
asmdzen
Дата 3.12.2010, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 28.11.2010

Репутация: 3
Всего: 5



Привет всем!
Есть такая задача: нужно создать класс для буферного записывания файлов на диск, чтоб при создании обьекта этого класса создавался отдельный трэд для этого обьекта. Проблема заключается в том что я немогу послать нормальный указатель на функцию обьекта функции создания трэда, тоесть там используется параметр this который я не знаю как передать чтоб трэд начал работать от имени именно нового обьекта.
Помогите пожалуйста разобратся, самому никак неудается.
Заранее благодарен.
PM MAIL   Вверх
Estranged
Дата 3.12.2010, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 30.8.2010

Репутация: нет
Всего: 3



А изнутри класса создать поток и передать ему this никак? Собственно, должна быть гарантия, что объект будет жить до тех пор, пока поток не отработает, иначе программа может пасть в неравной борьбе с ОС, почитав по запрещенным адресам, где был когда-то размещен объект.
PM MAIL   Вверх
asmdzen
Дата 3.12.2010, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 28.11.2010

Репутация: 3
Всего: 5



написал дополнительную функцию в классе типа 
Код

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


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

PM MAIL   Вверх
xvr
Дата 3.12.2010, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(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 Найти цитируемый пост)
тоесть даже если функция статическая я все еще немогу передать нормальный указатель на нее.
Можете.


PM MAIL   Вверх
asmdzen
Дата 3.12.2010, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 28.11.2010

Репутация: 3
Всего: 5



спасибо всем за помощь, это была моя ошибка - передавал указатель не на ту функцию, которая была не static.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0467 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.