Показать сообщение отдельно
Старый 25.08.2011, 15:45   #13
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Укозатель на метод класса

Сообщение от HolyDel Посмотреть сообщение
делай метод статичным. подумай сам - у какого именно объекта должны вызваться функция, если у тебя их будет 42?
Для вызова используются два указателя: на метод и на экземпляр класса. Я же уже писал: http://forum.boolean.name/showthread.php?t=15043

цель:
class MyCl{
private:
MyStr ControlThread;
void func1(WORD,void*,void*); //<---- хочу вызвать вот это
void func2(WORD,void*,void*);
void func3(WORD,void*,void*);
public:
MyCl();
~MyCl();
}
указтели:
MyCl *ParentInterface;
void (MyCl::*FunctionPtr)(WORD,void*,void*);
Получение адреса (? вообще костыльно выглядит - фактически по имеющимся данным [без указания конкретного экземпляра класса] можно восстановить только смещение до функции внутри класса, поэтому адрес, вероятно, относительно начала адреса экземпляра) метода (указатель на класс получается как обычно):
FunctionPtr=&MyCl::func1;
вызов (вызываю функцию с адресом FunctionPtr [здесь это func1] из экземпляра с адресом ParentInterface ):
(ParentInterface->*FunctionPtr)(0,0,0);

upd поправил код
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?

Последний раз редактировалось impersonalis, 25.08.2011 в 21:18.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
den (25.08.2011), genroelgvozo (25.08.2011)