我怎麼寫一個函數指針作爲默認的模板參數,我'猜它寫這樣的: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