Re[3]: Универсальный указатель на функцию-член класса
От: Ed.ward Россия  
Дата: 07.10.02 07:16
Оценка: 3 (1)
Здравствуйте AkaSaint, Вы писали:

AS>Здравствуйте Павел Кузнецов, Вы писали:


ПК>>Здравствуйте AkaSaint, Вы писали:


AS>>>Вопрос: как можно реализовать сабж на чистом С/С++ или в MSVC 7?


ПК>>В каком контексте? Решений есть несколько, каждое хорошо на своем месте.


AS>Контекст такой: есть класс — окно со скином, он предоставляет возможность тому, кто его использует, устанавливать свои обработчики сообщений, типа OnClose.


в этом случае гораздо удобнее воспользоваться интерфейсами, заводишь структуру типа этой


struct CSkinedWndEventsSink
{
  virtual void OnClose( ) = 0;
  virtual void OnChotToTam( ) = 0;
};


у твоего класса заводишь методы

class CSkinedWnd //это вроде как твой класс
{
  void Connect( CSkinedWndEventsSink *pSink );
  void Disconnect( CSkinedWndEventsSink *pSink );
}

что они должны делать понятно вроде

ну а теперь любой кто хочет обрабатывать события от CSkinedWnd должен наследоваться от CSkinedWndEventsSink и реализовать его методы. А в рантайме где надо приконнектится, а где надо отконнектится

это упрощенный вариант обработки событий успользуемый в COM, так что можешь почитать для ознакомления с оригиналом

Ed.ward
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.