x__x
我想做这样的事情:
typedef long (* fp)(BaseWindow< fp > & wnd, HWND hwnd, long wparam, long lparam);
但是我收到编译错误:
错误C2065:'fp':未声明 标识符
有可能以某种方式实现吗?
答案 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)