![]() |
|
|
![]()
|
|
| En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 2 Всего: 20 |
Создан поток, рабочий... ему нужно работать с локальной переменной, но так как тело потока описанно, как глобальное(как описать его, как локальное ?), я имею нестыковку в плане того, что невидно этой переменной для потока...
Пытался решить проблему, путем использования в потоке новой глобальной переменной, но мне нужно ассинхронно обновлять результаты той локальной переменной, а значит создать ещё один поток, в котором опять не будет доступна эта локальная переменная. Программа на базе диалогового окна, MFC, переменная в классе этого диалога, поэтому сделать её глобальной не вижу возможным, как выйти из получившейся ситуации? Добавлено @ 20:50 В самом плохом варианте я уже сделал : это создание временного файлового буфера, следовательно большие накладные расходы ресурсов.. Это сообщение отредактировал(а) En_t_end - 15.12.2004, 20:43 |
|||
|
||||
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 2 Всего: 47 |
а чем public, friend не помогают?
можно переменную static объявить. только конечно доступ к ней синхронизировать |
|||
|
||||
| Mad |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 2 Всего: 19 |
En_t_end
Да и не надо
Это сообщение отредактировал(а) Mad - 16.12.2004, 13:46 |
||||
|
|||||
| En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 2 Всего: 20 |
Mad
Во как раз что мне нужно... !!! а ведь до простейших указателей я то не додумался Кто-нибудь поставьте Mad'у "+" Добавлено @ 16:50 bel_nikita Ситуация не много другая, да и впрочем легче изменить тело потока, нежели класс... -для меня... |
|||
|
||||
| En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 2 Всего: 20 |
Интересно, а если надо использовать функцию, описанную в классе, в данном потоке, как тогда делать ?
|
|||
|
||||
| Plamenk |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 258 Регистрация: 18.2.2003 Репутация: нет Всего: 3 |
Передать указатель на экземпляр класса.
Это сообщение отредактировал(а) Plamenk - 16.12.2004, 20:07 |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Вообще как-то пднимался вопрос об области видимости.Поищи в поисковике.Я как -то интересный пример приводил по связке классов и окон.Кому даже пример отослал.Там даже выход из ,казалось бы безвыходных ситуаций
-------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 2 Всего: 20 |
Coocky
Чего-то я не нашёл |
|||
|
||||
| Mad |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 2 Всего: 19 |
En_t_end
Вопрос не совсем понятен, функция в контексте какого потока должна выполняться ? |
|||
|
||||
| En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 2 Всего: 20 |
"Вопрос не совсем понятен, функция в контексте какого потока должна выполняться ?"
Описанна в классе(диалога), а выполняться в создаваемом потоке... Добавлено @ 18:51 Причём чего-то тут немного странно, допустим : UINT sdfaofoqwfgo(LPVOID nParam) { MyProgDlg::MyFunc; } MyFunc(void) //типа так она выглядит... описанна там где должна... { countd = 123; } int countd = 0; Дык если MyProgDlg::MyFunc; -оставить так, то всё будет нормально - компилятор материться не будет, но не будет получен желаемый результат - countd так и останется 0 |
|||
|
||||
| Mad |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 2 Всего: 19 |
Если так то просто передавай указатель на нее или на класс.
Тут много чего странного
|
||||||
|
|||||||
| En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 2 Всего: 20 |
MAD
Спасибо Короче я понял почему не работало, но более всего странно, что из-за моей ламерской ошибки компилятор не стал ругаться, почему ? MyProgDlg::MyFunc; - Ведь действительно не правильно.... в случае применения, а не в случаи описания.... Вообщем надо опыта набираться |
|||
|
||||
| En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 2 Всего: 20 |
Однако, раньше не работал с указателями на класс
AfxBeginThread(DataOnLine, (LPVOID)&СMprogDlg); DataOnLine - тело потока... Вот ошибка : 'СMprogDlg' : illegal use of this type as an expression Подозреваю, что проблема здесь (LPVOID)&СMprogDlg --- тут чего-то не хватает... MAD Огромное тебе спасибо и респект, за то что возишься со мной... |
|||
|
||||
| Mad |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 2 Всего: 19 |
Понятие "указатель на класс" не существует, есть "указатель на обьект класса". В твоем случае :
|
||||
|
|||||
| En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 2 Всего: 20 |
Mad
Спасибо !... раз С++ изучаю, значит надо классы подробнее рассмотреть... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |