Re[6]: Указатель на функцию-член
От: Матвей Жданович Беларусь  
Дата: 02.10.05 15:00
Оценка:
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>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.