C++ 一种函数指针,指向一个函数,该函数将模板类的一个对象作为模板参数。可能的
x_uux 我想这样做:C++ 一种函数指针,指向一个函数,该函数将模板类的一个对象作为模板参数。可能的,c++,templates,function-pointers,typedef,C++,Templates,Function Pointers,Typedef,x_uux 我想这样做: typedef long (* fp)(BaseWindow< fp > & wnd, HWND hwnd, long wparam, long lparam); 但我得到一个编译错误: 错误C2065:“fp”:未声明 标识符 是否可以以某种方式实现此功能?不可以,因为模板参数的类型将包括其自身。这将导致类型中的无限递归 如果不是类模板专门化,而是接受它的基类,这是非常可能的 struct TemplateBase { }; typedef
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, ...);
}
您想对此做什么?从本页的“相关链接”部分:请粘贴编译器报告错误的行。woops。指针名为fp\u t,但它在打印时没有出现在文章的预览中,因此我将其更改为仅fp,但忘记修改错误消息。这是我面临的一个问题的疯狂想法。但也许有更好的方法。在这里作为评论来解释这个问题太长了,所以也许我稍后会提出一个正式的问题。感谢您的回答。请注意,您可以将虚拟函数添加到基类中,并且从sampleFunc中调用它们将控制派生类,就像在非模板类中使用虚拟函数一样。