Re: Pointer to member as template argument
On Mar 14, 2:34 pm, Morten V Pedersen <m...@kom.aau.dk> wrote:
Hi guys,
Heres my code:
#ifndef CTIMEOUT_H
#define CTIMEOUT_H
template<class T, void (T::*FPtr)() >
class CTimeoutCallback
{
public:
~CTimeoutCallback();
CTimeoutCallback(T& o);
void Callback();
private:
T *obj;
};
#endif
//// CPP file below
#include "Timeout.h"
template<class T, void (T::*FPtr)() >
CTimeoutCallback<T, FPtr>::CTimeoutCallback(T& o) : obj(&o)
{
}
template<class T, void (T::*FPtr)() >
void CTimeoutCallback<T, FPtr>::Callback()
{
(obj->*FPtr)();
}
/// I trying to use it like this
CTestClass test;
CTimeoutCallback<CTestClass, &CTestClass::Print> timeout(test);
timeout.Callback();
However I'm getting the following errors:
Undefined symbol: 'CTimeoutCallback<class CTestClass, &void
CTestClass::Print(void)>::~CTimeoutCallback<class CTestClass, &void
CTestClass::Print(void)>(void)
(??1?$CTimeoutCallback@VCTestClass@@$1?Print@1@QAEXXZ@@QAE@XZ)'
Can anybody see my mistakes?
Yes, you declared but did not define your destructor.
Cheers! --M