我想存儲一個函數以後再調用,這裏是一個片段。std ::在類內部綁定一個靜態成員函數
這工作得很好:
void RandomClass::aFunc(int param1, int param2, double param3, bool isQueued /*= false */)
{
/* If some condition happened, store this func for later */
auto storeFunc = std::bind (&RandomClass::aFunc, this, param1, param2, param3, true);
CommandList.push(storeFunc);
/* Do random stuff */
}
但是,如果RandomClass是靜態的,所以我相信我應該這樣做:
void RandomClass::aFunc(int param1, int param2, double param3, bool isQueued /*= false */)
{
/* If some condition happened, store this func for later */
auto storeFunc = std::bind (&RandomClass::aFunc, param1, param2, param3, true);
CommandList.push(storeFunc);
/* Do random stuff */
}
但是,這並不工作,我得到的編譯錯誤
錯誤C2668:'std :: tr1 :: bind':對超載函數的模糊調用
任何幫助讚賞。
是否有多於一個的過載' RandomClass :: aFunc'? – juanchopanza
另外我可以做到這一點,它適用於普通類,但不適用於靜態版本。 \t CommandList.push([=]() \t { \t \t aFunc(參數1,參數2,參數3,TRUE); \t}); –
是的,還有第二個:: aFunc具有不同的參數。另一個函數使用字符串,與我試圖使用的參數相比,它的參數更少。 –