一个函数指针,指向一个函数,该函数将模板类的对象与所述函数指针作为模板参数。可能?

时间:2009-07-04 16:45:33

标签: c++ templates function-pointers typedef

x__x

我想做这样的事情:

typedef long (* fp)(BaseWindow< fp > & wnd, HWND hwnd, long wparam, long lparam);

但是我收到编译错误:

  

错误C2065:'fp':未声明   标识符

有可能以某种方式实现吗?

2 个答案:

答案 0 :(得分:9)

不,不是,因为模板参数的类型会包含自身。这将导致类型中的无限递归。

如果不是类模板专门化,你接受它的基类,这是非常可能的

struct TemplateBase {

};

typedef long (*fpType)(TemplateBase&, HWND, long, long);

template<fpType FP>
struct BaseWindow : TemplateBase {

};


long sampleFunc(TemplateBase &b, HWND hwnd, long wparam, long lparam) {
  ...
}

int main() {
    BaseWindow<sampleFunc> bw;
    sampleFunc(bw, ...);
}

你想用这个做什么?

答案 1 :(得分:0)