Я начал пытаться узнать std :: function после прочтения Скотта Майера Эффективного C++. Я сделал следующее пример программы, чтобы дать объект станд :: функцию к классуинициализация конструктора функций std
#include <iostream>
#include <string>
#include <functional>
class FlyBehaviour
{
public :
void fly()
{
std::cout<<"Flying";
/* Work Here */
}
};
typedef std::function<void(const FlyBehaviour&)> FlyFunc;
class Duck
{
public :
Duck(FlyFunc flyFunc) : _flyFunc(flyFunc){}
private :
FlyFunc _flyFunc;
};
int main()
{
Duck(&FlyBehaviour::fly);
}
Compiling приведенный выше код дает мне следующую ошибку
error: invalid use of qualified-name 'FlyBehaviour::fly'
В исследовании, большинство интернет-пунктов к использованию std :: bind/boost :: bind как решение. Может кто-нибудь, пожалуйста, скажите мне, как его применять, особенно, где мне нужно объявить объект, к которому привязана функция?
Какие решения выявили ваши исследования? Вы очень близки, но об этом спрашивали много раз ... _ «где мне нужно объявить объект» _ Где вам угодно? –