Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[C++] проверенное решение 02.02.03 18:29 Число просмотров: 1040
Автор: amirul <Serge> Статус: The Elderman
|
> > А вообще, я не знаю почему, но у меня тоже не > получалость > > функции-член класса вызвать отдельной нитью. Но если > > функцию определить независимо то все работает > (проверено). > Ну вообще-то ничего удивительного :) "Внешний вид" > указателя на функцию и указателя на член класса отличается Внешний вид в первую очередь отличается на соглашение о вызове: thiscall, а для глобальных - __stdcall для большинства WinAPI. В thiscall - неявно передается указатель this (для VC - в регистре ecx), и обращение к членам происходит именно через него, а все остальные параметры передаются как __cdecl.
А stdcall - это по мойму паскалевское соглашение, где параметры передаются через стек, а место из под них освобождает вызванная функция, в отличие от cdecl-а, где стек очищает вызывающая функция и именно это дает возможность использования переменного числа аргументов.
Короче, не thiscall-ом функция-член может быть только если объявить ее static - тогда она вызывается в контексте какого-либо класса вообще, а не конкретного объекта этого класса. Такую функцию можно передать и в качестве колбяки и в качестве нитеобразующей и вообще (надо только не забыть переопределить соглашение на __stdcall)
> примерно на имя класса и два двоеточия :) Другими словами, > это просто разные типы указателей, и друг к другу они на > халяву не приводятся.
|
|
|