我的以下示例使用可變參數模板註冊一個類的內部的功能。註冊單個函數可以工作,但類成員函數又如何?我試過std :: bind,但是這期望佔位符不是一個選項,因爲我不知道參數的數量。有沒有一種簡單的方法在C++ 11中執行此操作,還是我不得不爲每個參數實現註冊函數?C++成員函數結合具有可變參數模板
template<typename TReturn, typename... TArgs>
class Func {
std::function<TReturn (TArgs...)> fn;
template<typename TFunction, typename TObject>
bool register(TFunction f, TObject obj){
}
bool register(std::function<TReturn (TArgs...)> f){
fn = f;
return true;
}
}
你不會有太多的樂趣調用一個函數'register'因爲這標識符是關鍵字。更重要的是,你似乎有兩個名字和一個沒有實現的函數:你期望函數做什麼? –
我忘了更改名稱。你說得對,這是行不通的。讓我們忘記第二個功能。我想要的是在fn中存儲一個類成員函數。 – Gustavo
你不需要爲成員函數分開過載,用戶可以使用過載服用'的std :: function',並通過'的std ::綁定(&X ::樓OBJ,ARGS ...)'或一個合適的函子。 – 0x499602D2