2013-01-01 53 views
0

如何將模板參數中的函數或成員函數指針轉換爲函數類?假設一個函數類是一個定義成員函數operator()的類。如何將模板參數中的函數或成員函數指針轉換爲函數類?

我認爲在模板中概括使用函數和成員函數是有用的。

例如,

template<..., class FunClass> 
class MyClass {}; 

然後,FunClass可以從各種函數指針,利用根據MyClass的要求不同數量的參數成員函數指針的進行轉換。任何簡單的方法來做轉換?謝謝。

+8

什麼是「函數類」? – Mat

+0

轉換的意思是什麼?你能給出一些僞代碼的例子來說明你到底想要達到什麼目的嗎? – user93353

+0

目前還不清楚你想要做什麼。你想要'std :: function​​'這樣的東西嗎? –

回答

1

繼在評論中討論:你可以提取ConvertToFunClass是這樣的:(從here被盜)

template<typename Sig> 
struct Types; 

template<typename RetType, typename ClassType, typename Arg0> 
struct Types<RetType (ClassType::*)(Arg0)> 
{ 
    typedef RetType return_type; 
    typedef ClassType class_type; 
    typedef Arg0 argument_0; 
}; 

用法可能是MyClass<T, R, Types<decltype(&MyFun)>::ClassType > a;

(免責聲明:我沒有試過這個代碼,沒有訪問編譯器的ATM。)

相關問題