Предположим, у меня есть класс:
class A {
public:
A();
void myFunc();
};
Затем в другом месте программы я создаю экземпляр класса A и пытаюсь получить указатель функции на myFunc()
:
A* a = new A;
//ATTEMPTS AT RETRIVING FUNCTION POINTER FOR A::MYFUNC
std::function<void()> fnptr = a->myFunc;
std::function<void()> fnptr(std::bind(A::myFunc, &a);
Но обе эти попытки представляют собой вызов ошибки нестатической функции-члена без объектного аргумента.
Возможно, обе эти попытки совершенно неуместны, но, по сути, я пытаюсь получить указатель функции на функцию myFunc()
в конкретном экземпляре a
. Любая помощь в том, как это сделать, приветствуется :)
std::bind(A::myFunc, &a
a
уже есть указатель. Нет необходимости в другом уровне косвенности. Обратите внимание на лямбда-выражения как на более эффективную альтернативуbind
. - person user4581301   schedule 21.08.2020