![]() |
|
Модераторы: bsa |
![]()
|
|
| WiND |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 3.12.2006 Репутация: нет Всего: нет |
Все бы хорошо, но! 1. метод CClient::Receiver - скрыт, поэтому я его явно вызвать не могу из указателя. 2. помимо метода, на который (черт с ним), можно передать указатель на функцию (Receiver), мне необходимо иметь доступ к другим скрытым членам класса. Найденый мной выход - это создавать струтуру в которой указывать все необходимые ссылки и в CreateThread в качестве параметра передавать ссылку на эту структуру. Вопрос: Можно как нибудь красиво подойти к решению данного вопроса? Может быть friend как-то здесь поможет? |
|||
|
||||
| WiND |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 3.12.2006 Репутация: нет Всего: нет |
Так, пожалуй я тупанул... можно же обратиться внутри функции класса к самому классу. она же его часть )
Только как, в качестве параметра в CreateThread передать адрес функции CClient::Receiver(void) Нужно преобразовать lPVOID lp = (LPVOID)&CClient::Receiver;
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Обычно, это делается через статические приватные методы классов:
Добавлено через 43 секунды Может лучше использовать boost::asio? |
|||
|
||||
| WiND |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 3.12.2006 Репутация: нет Всего: нет |
А как в качестве параметра в CreateThread передать ссылку на CClient::Receiver()
а в _receiver(LPVOID data) просто вызвать ее? это позволит не делать Receiver публичным) про boos:asio - когда нибудь... )) Можно конечно сделать _receiver другом ) Но! Слишком много времени убил на способ передачи ссылки на функцию член класса, чтобы просто забыть про это) Это сообщение отредактировал(а) WiND - 10.2.2010, 13:31 |
|||
|
||||
| WiND |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 3.12.2006 Репутация: нет Всего: нет |
через пятое колено получилось таки.
Вот как-то так. Интересно знать мнение умных), насколько хорошо так делать? Это сообщение отредактировал(а) WiND - 10.2.2010, 13:46 |
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
Скинь полный код класса
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
В моем коде сделано именно то, что ты хочешь. Receiver можешь делать каким угодно, хоть приватным, хоть защищенным. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |