Rao*_*Rao 0 c++ templates typedef function-pointers
x__x
我想做这样的事情:
typedef long (* fp)(BaseWindow< fp > & wnd, HWND hwnd, long wparam, long lparam);
Run Code Online (Sandbox Code Playgroud)
但我得到一个编译错误:
错误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, ...);
}
Run Code Online (Sandbox Code Playgroud)
你想用这个做什么?
| 归档时间: |
|
| 查看次数: |
302 次 |
| 最近记录: |