c++ 模板类 静态成员初始化问题

template<class MessageHandlerClass>
class TimerApp
{
//friend class TimerApp;
typedef void (MessageHandlerClass::*HandlerMethod)();

public:
static void AddTimer(int interval,MessageHandlerClass *handler);

private:
static int interval_;
static HandlerMethod handler_method_; //回调函数指针
static MessageHandlerClass* handler_; //调用对象
static void OnTimer();
};

template<class MessageHandlerClass> int TimerApp<MessageHandlerClass>::interval_ = 0;
template<class MessageHandlerClass> MessageHandlerClass * TimerApp<MessageHandlerClass>::handler_ = 0;

请问handler_method_如何在类外初始化
我尝试template<class MessageHandlerClass> HandlerMethod SubTimerApp<MessageHandlerClass>::handler_method_ = 0;
报错:error: ‘HandlerMethod’ does not name a type

和普通的类定义静态成员一样,只不过要加上模板的申明

template <typename T>
struct template_class {
static int static_member;
};

template <typename T>
int template_class<T>::static_member = 1;追问

你好,我问的是其中有个函数指针变量如何在类外定义,谢谢

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-08-06
template<class MessageHandlerClass> typename TimerApp<MessageHandlerClass>::HandlerMethod TimerApp<MessageHandlerClass>::handler_method_ = 0;

本回答被提问者采纳
相似回答