Я работаю на C ++ 11.
Я хочу написать функцию funA в классе, которая связывает другую функцию funB в том же классе. А функция funB является параметром в функции funA.
Какой может быть синтаксис funcA?
Я пытался использовать std :: function func, но я не могу скомпилировать.
Пожалуйста, объясните.
Спасибо.
class ServiceClass
{
typedef std::function<void(const int&, const int&)> ServiceCallBack;
public:
void ServiceFunc(ServiceCallBack callback)
{
callback(1,2);
}
};
class MyClass
{
public:
ServiceClass serviceClass;
void myFunction(int i)
{
cout << __FUNCTION__ << endl;
cout << i << endl;
}
void myFunction2(int i)
{
cout << __FUNCTION__ << endl << i << endl;
}
void bindFunction(std::function<void()> func)
{
std::bind(func, this, std::placeholders::_1);
func();
}
void testmyFunction()
{
serviceClass.ServiceFunc( std::bind(
MyClass::myFunction,
this,
std::placeholders::_1
));
}
void testmyFunction2()
{
serviceClass.ServiceFunc( std::bind(
MyClass::myFunction2,
this,
std::placeholders::_1
));
}
void testFunctions( int i )
{
if( i == 1 )
{
serviceClass.ServiceFunc( std::bind( MyClass::myFunction, this, std::placeholders::_1 ));
}
else if( i == 2 )
{
serviceClass.ServiceFunc( std::bind( MyClass::myFunction2, this, std::placeholders::_1 ));
}
}
};
Исходя из некоторых условий, в функции testFunctions я хочу вызвать любую из функций обратного вызова, myFunction или myFunction2. Так что если a может изменить testFunctions для получения параметра, который может принимать любую функцию обратного вызова, тогда мне не нужно писать условия if else.
Пожалуйста, предложите.