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

template
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 int TimerApp::interval_ = 0;
template MessageHandlerClass * TimerApp::handler_ = 0;

请问handler_method_如何在类外初始化

补充:我尝试template HandlerMethod SubTimerApp::handler_method_ = 0;
报错:error: ‘HandlerMethod’ does not name a type

c++

4个回答

初始化时把template去掉。

typedef void (MessageHandlerClass::*HandlerMethod)();
把这个放到类外声明

HandlerMethod handler_method_ = 0
不就行了,加那么多零碎是干嘛?

phenix2009
白色一大坨 HandlerMethod TimerApp::handler_method_ = 0
一年多之前 回复

好吧,是模板啊,那么看这里吧
https://blog.csdn.net/zjq2008wd/article/details/38417859

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问