0

x__x

我想做这样的事情:

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

但我得到一个编译错误:

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

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

4

2 回答 2

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

你想用这个做什么?

于 2009-07-04T16:53:13.597 回答
0

来自该页面上的相关链接部分:如何对一个函数指针进行类型定义,该函数指针将其自身类型的函数作为参数?

于 2009-07-04T17:00:45.447 回答