我想使用函數指針到類成員函數,然後使用std :: bind來調用該函數在一個單獨的函數中關於該類的一個對象。在這個單獨的函數中,我可以綁定對象和函數指針一次,然後第二次在Xcode中,但不與MSVS2015 ...試圖重新分配std ::功能與std :: bind並獲取錯誤「嘗試引用已刪除的功能」
這裏是一些基本代碼,重現我遇到的問題。一切編譯和運行上的Xcode罰款:
class AClass
{
public:
bool isNumber1()
{
return num == 1 ? true : false;
}
private:
int num;
};
typedef bool (AClass::*isFunction)();
bool checkIsFunc (AClass& object, isFunction function)
{
auto f = std::bind(function, object);
f = std::bind(function, object); // Error occurs here
return f();
}
int main (int argc, char* argv[])
{
AClass obj;
bool outcome = checkIsFunc(obj, &AClass::isNumber1);
return 0;
}
然而,隨着MSVS2015,我得到以下錯誤:
error C2280: 'std::_Bind<true,bool,std::_Pmf_wrap<bool (__thiscall AClass::*)(void),bool,AClass,>,AClass &> &std::_Bind<true,bool,std::_Pmf_wrap<bool (__thiscall AClass::*)(void),bool,AClass,>,AClass &>::operator =(const std::_Bind<true,bool,std::_Pmf_wrap<bool (__thiscall AClass::*)(void),bool,AClass,>,AClass &> &)': attempting to reference a deleted function
任何想法,我做錯了什麼,或者爲什麼這個工程在Xcode而不是VS ?
謝謝!
吉姆
啊隨時隨地的事實一起,我開始得出這樣的結論。我試圖找出綁定返回的內容,然後想要製作一個指針,稍後我會在執行過程中更新它。一旦我創建了一個std ::函數,你就回應了!再次感謝! – jimspree1200 2015-02-07 13:53:48