Форум
C/C++
Тема
Как правильно задавать вопросы
B
I
abc
U
X
3
X
3
H1
H2
H3
H4
H5
H6
Asm
C/C++
C#
Erlang
Haskell
IDL
Java
Lisp
MSIL
Nemerle
ObjC
OCaml
Pascal
Perl
PHP
Prolog
Python
Ruby
Rust
SQL
VB
Здравствуйте, okman, Вы писали: O>Здравствуйте, maxis11, Вы писали: M>>Проблема заключается в том, что функцию, которую нужно передать в поток, находится в классе, и к сожалению её нельзя обозначить как static M>>Ниже приведен исходный код: M>>... O>Передавайте в _beginthreadex адрес функции, находящейся в глобальном или анонимном O>пространстве имен. А этой функции можно передать указатель на экземпляр класса, O>из которого она сможет брать параметры и вызывать методы: O>[ccode] O>namespace { O>unsigned int O>_stdcall O>ThreadProc( O> __in VOID * pParam O> ) O>{ O> MTcp_server *pServer = (MTcp_server *)pParam; O> pServer->lstn(); O> return 0; O>} O>} // namespace O>unsigned MTcp_server::listen_start(int n, void* indata) O>{ O> if (listening==0) O> { O> if (listen(serv_socket,n)) O> { O> serv_error=WSAGetLastError(); O> } O> else O> { O> serv_error=0; O> listening=1; O> unsigned int id; O> // Если потоков несколько, можно придумать O> // другую схему для передачи indata. O> m_indata = indata; O> _beginthreadex(NULL, 0, ThreadProc, this, 0, &id); O> return id; O> } O> } O>} O>[/ccode]
Теги:
Введите теги разделенные пробелами. Обрамляйте в кавычки словосочетания с пробелами внутри, например:
"Visual Studio" .NET
Имя, пароль:
Загрузить
Нравится наш сайт?
Помогите его развитию!
Отключить смайлики
Получать ответы по e-mail
Проверить правописание
Параметры проверки …