samty, эта строчка
должна выглядеть так:
Т.к. приоритет у оператора ->* ниже чем у оператора вызова функции '()' нужны дополнительные скобки.
Думаю, проблема была в этом...
Вот так работает:
#include <iostream>
using namespace std;
template < typename T, typename RT_Funct >
class CFunctionPtr
{
public:
T *_ptclass;
typedef RT_Funct (T::*funct)(void);
funct _fnptr;
CFunctionPtr(T *ptclass, funct fn )
{
_ptclass = ptclass;
_fnptr = fn;
}
void Itemfunction() {
(_ptclass->*_fnptr)();
}
void f() {}
};
struct CMsg
{
long msg()
{
cout << "CMsg::msg()" << '\n';
return 0L;
}
};
int main()
{
CMsg messageItem;
CFunctionPtr<CMsg, long > playFunct(&messageItem, &CMsg::msg );
playFunct.Itemfunction();
}