>>> можно ли в С++ обьявить универсальный указатель на функцию? не используя
>>>наследования
>>
>>отвечаю сам себе
>>как оказываеться все можно.
>
>И как? Видимо никак :)
Не дождался...Как я делал то, что спрашивал автор поста или как я сам это интерпретировал...
В любом случае делается базовый класс:
class IEventObject {
public:
virtual Result eventFunction( Event* const ) = 0;
};
typedef Result (IEventObject::*eventFuncPtr_t)( Event* const );
Дальнейшие манипуляции достаточно красиво выглядят, но только в пределах наследования этого класс...т.е.
class SomeProcessor {
protected:
vector< pair< IEventObject*, eventFuncPtr_t > > m_eventTable;
public:
void sendEvent( Event* evt ) {
// итерация, проверки и т.п., и что-то вроде
Result res = ( itr->first->*itr->second )( evt );
}
Но, как это видно - всё работает только для наследованных объектов...Как же в плюсах выглядит универсальный(!) указатель на любой(!) объект...не знаю...не постиг ещё...Наверное это что-то вроде:
template< typename _TObject, typename _TFunction >... не знаю вообщем...