0
我想創建一個模板類,它將反過來生成一個函數的包裝。該類將隨後返回包裝。我想用模板具有將與任何功能的工作與不同的簽名,如普通類:使用C++模板與std :: function和std :: bind
std::function<void()>task = std::bind(fun1, param1, param2);
std::function<int(int, int)>task = std::bind(fun2, param1, param2);
我想有這樣的事情:
template <typename T1, typename T2>
class A {
A (string param1, string param2) {
// The created wrapper here i.e. 'task' will be returned by the class.
function<T1>task = bind(T2, param1, param2);
}
// Return the created wrapper in the constructor.
function<T1> returnWrapper() {
return task;
}
};
上面的代碼主要是僞代碼,因爲它不能被編譯,但給出了我正在尋找什麼的想法。有沒有解決方案?我認爲應該不僅僅是爲一個函數的簽名使用模板。任何幫助將不勝感激。如果可能的話,我也希望能夠傳遞任意數量的參數來'綁定'。
如果你能做到這一點,你會怎麼稱呼它呢? – aschepler
我沒有編寫完整的僞代碼,但意圖是類將返回包裝器,以便稍後調用它。在這種情況下,班級應該返回'任務'。 – Dan
啊,起初我以爲你想要導致一種常見的非模板類型可以容納任何類型的函數。但是我看到這個類型仍然依賴於函數類型'T1'。 'A(string,string)'是一個構造函數,它不能返回任何東西。你的意思是'任務'會成爲你稍後可以訪問的班級成員?或者,也許可以直接調用「A」類型的對象。 – aschepler