一个功能的指针指向一个函数的一个目的模板类与上述功能的指针为模板的论点。可能吗?

StackOverflow https://stackoverflow.com/questions/1082552

x__x

我想要做这样的事情:

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

但我得到一个编译错误:

错误C2065:'p':未申报的 标识符

是否有可能实现这种莫名其妙?

有帮助吗?

解决方案

没有它不是,因为模板参数的类型将包括本身。这将产生在类型的无限递归。

如果不是类模板专业化,你接受一个基类的话,这是非常有可能的。

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, ...);
}

你要什么与此有关呢?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top