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

Rao*_*Rao 0 c++ templates typedef function-pointers

x__x

我想做这样的事情:

typedef long (* fp)(BaseWindow< fp > & wnd, HWND hwnd, long wparam, long lparam);
Run Code Online (Sandbox Code Playgroud)

但我得到一个编译错误:

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

是否有可能以某种方式实现这一点?

Joh*_*itb 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, ...);
}
Run Code Online (Sandbox Code Playgroud)

你想用这个做什么?