Я пытаюсь использовать указатели функций для функции класса, а затем использовать std :: bind для вызова этой функции на объект этого класса в отдельной функции. В рамках этой отдельной функции я могу связать объект и функцию указателя один раз, а затем второй раз в Xcode, но не с MSVS2015 ...попытка переназначить std :: function с помощью 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