[an error occurred while processing this directive]
ну выдержка тут вообще не в тему. Короче как я понял ты хочешь поиметь указатель вне классового контента - это неправильно. Все нестатические методы классы имеют тип вызова "thiscall". Вызвать его просто так не получится. Вернее сделать так все таки можно, но разных компиляторах это чревато чем угодно вплоть до полного краха. Дохтур хоть и мудак, но тебе тоже очень посоветую эту книгу - сам сегодня купил -> (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено DASM 10 августа 2006 г. 12:29
В ответ на: Вот выжимка из иаровского хелпа (+) отправлено =NIK= 10 августа 2006 г. 11:35

у методов классов неявно передается параметр this. В реализации компилятора Visual Studio он идет в регистре ECX , так что по идее можно выебнуться и нагло привести его к чему угодно - краха не будет. Но так делать не надо. Нужно мыслить классовыми понятиями.


class CObject
{
public:
void PrintA (){printf ("A");}
void PrintB (){printf ("A");}
};


class AnotherClass : public CObject
{
public:
void SetHandler (void (CObject::*ptr) ()) {m_pfoo = ptr;}
void Exec ()
{
(this->*m_pfoo)();
}
private:
void (CObject::*m_pfoo) ();
};


int _tmain(int argc, _TCHAR* argv[])
{
AnotherClass cl;
cl.SetHandler(&CObject::PrintA);
cl.Exec();
cl.SetHandler(&CObject::PrintB);
cl.Exec();
}


Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа
Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 
URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание