我怎么写一个函数指针作为默认的模板参数,我'猜它写这样的:C++函数指针作为默认模板参数
template<typename R,
typename A,
typename F=R (*PF)(A)>
class FunctionPtr { ...
我的问题是,
1.is有可能吗?
2.如果是我上面的猜测代码是正确的,PF
这里的目的是什么?我需要这个吗?
我怎么写一个函数指针作为默认的模板参数,我'猜它写这样的:C++函数指针作为默认模板参数
template<typename R,
typename A,
typename F=R (*PF)(A)>
class FunctionPtr { ...
我的问题是,
1.is有可能吗?
2.如果是我上面的猜测代码是正确的,PF
这里的目的是什么?我需要这个吗?
不,你不需要PF。
template<typename R,
typename A,
typename F=R (*)(A)>
的PF
不仅是无用的,但必须在这种情况下被删除。例如,在函数指针声明的上下文中,它是必需的:
int (*PF)(double) = &A::foo; // declares a 'PF' variable of type 'int (*)(double)'
但在此处既不要求也不合法。
我建议typedef
ing指向函数。 typedef R (*PF)(A);
然后将PF
作为默认模板参数。
更多的问题,我如何写成员函数,像这样? 'template' –
uray
2010-12-15 12:28:12
got err。在VC'03上的C2653:''C'不是'typename F = R(C :: *)(A)>' – uray 2010-12-15 13:04:53
'上的类或名称空间'我在这里问了另一个问题:http://stackoverflow.com/questions/4450246/c-pointer-to-member-function-as-template-default-argument – uray 2010-12-15 13:14:16