У меня есть набор классов обратного вызова, которые я использую для обработки обратных вызовов с переменным числом параметров. Прямо сейчас у меня есть около 6 различных экземпляров для обработки различного количества аргументов. Есть ли способ сделать один экземпляр, который может обрабатывать переменное количество аргументов? В конечном счете, я бы хотел, чтобы каждый параметр был POD-типом или указателем класса или структурным указателем. Есть идеи?
template <class T>
class kGUICallBackPtr
{
public:
kGUICallBackPtr() {m_obj=0;m_func=0;}
void Set(void *o,void (*f)(void *,T *));
inline void Call(T *i) {if(m_func) m_func(m_obj,i);}
inline bool IsValid(void) {return (m_func!=0);}
private:
void *m_obj;
void (*m_func)(void *,T *);
};
template <class T,class U>
class kGUICallBackPtrPtr
{
public:
kGUICallBackPtrPtr() {m_obj=0;m_func=0;}
void Set(void *o,void (*f)(void *,T *,U *));
inline void Call(T *i, U *j) {if(m_func) m_func(m_obj,i,j);}
inline bool IsValid(void) {return (m_func!=0);}
private:
void *m_obj;
void (*m_func)(void *,T *,U *j);
};