BSG>Так-с...
BSG>Задумался далее: в функцию я значения передал, НО!
BSG>Теперь мне эти значения нужно сохранить в массиве... Застрял опять... Мнения?
ну если нет религиозных причин не использовать boost то boost::function и boost::mem_fn решат все проблемы
если есть то можно наваять велосипед что-то вроде этого:
struct CAbstractFunctor
{
virtual void operator()(){};
virtual ~CAbstractFunctor(){};
};
template <class TOwner> struct CFunctor:public CAbstractFunctor
{
TOwner* m_pOwner;
void(TOwner::* m_pFunc)(void);
CFunctor(TOwner* pOwner,void(TOwner::* func)(void)):m_pOwner(pOwner),m_pFunc(func){};
virtual void operator()()
{
(m_pOwner->*m_pFunc)();
};
};
struct D{
CAbstractFunctor* arr[2];
template <class TOwner> void fD(TOwner* pOwner,void(TOwner::* func)(void),int i)
{
arr[i] = new CFunctor<TOwner>(pOwner,func);
}
void DoIt(int i)
{
(*arr[i])();
}
};
Надо только потом не забыть почистить память.
В любом случае написание таких велосипедов дело опасное и вообще говоря не нужное.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>