x__x
我想做这样的事情:
typedef long (* fp)(BaseWindow< fp > & wnd, HWND hwnd, long wparam, long lparam);
但我得到一个编译错误:
错误 C2065:“fp”:未声明的标识符
是否有可能以某种方式实现这一点?
x__x
我想做这样的事情:
typedef long (* fp)(BaseWindow< fp > & wnd, HWND hwnd, long wparam, long lparam);
但我得到一个编译错误:
错误 C2065:“fp”:未声明的标识符
是否有可能以某种方式实现这一点?
不,它不是,因为模板参数的类型将包括它自己。这将导致类型中的无限递归。
如果您接受它的基类而不是类模板专业化,那是很有可能的
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, ...);
}
你想用这个做什么?
来自该页面上的相关链接部分:如何对一个函数指针进行类型定义,该函数指针将其自身类型的函数作为参数?