我想存储一个函数以后再调用,这里是一个片段。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具有不同的参数。另一个函数使用字符串,与我试图使用的参数相比,它的参数更少。 –