Как передать указатель на член функции, когда ожидается указатель на функцию - PullRequest
0 голосов
/ 03 июня 2018

Я пытался использовать несколько решений на этом форуме, но, честно говоря, все они сбивают с толку, и я не понимаю, как я могу применить их к своему коду.Итак, у меня есть:

class A { public: ... 
A(args..., void (*myCallback)())
};

Это работает для обычных функций, но когда я пытаюсь это

class B { public: void member(){}};
B temp;
A myobj(args..., temp.member);

Это не работает.Насколько я знаю, это потому, что указатели на функции-члены скрыли этот параметр, поэтому список аргументов не совпадает.Я не могу сделать класс А статичным по причинам дизайна.И создание дополнительного конструктора для каждого класса, который я могу передать в него, является моим временным решением, но я использую конструктор буквально для каждого класса, который есть в моем проекте.Есть ли универсальное решение?Я читал, что std :: bind или templates это путь, но я не знаком с ними.В частности, связывание очень сбивает с толку из-за нехватки ресурсов, чтобы читать об этом, поэтому я думал о чем-то вроде

template<typename> var;
class A { ... 
    A(args..., void (*myCallback)(var))
    };

Но, конечно, это не то, как вы используете шаблоны, потому что компилятор дает мне ошибки по этому поводу.

...