У меня проблема с привязкой параметров к функции. Функция вызова класса Invoker, и она не знает о параметрах. Поэтому я не могу использовать заполнители в привязке, как:
v.invoke(boost::bind(&B::fun, this, _1));
Я хочу сделать что-то вроде этого:
v.invoke(boost::bind(&B::fun, this, fun_p));
Мне это нужно, потому что я хочу передать функцию A::fun
в B::BFun
. B::BFun
не должен вызывать напрямую A::fun
, но с использованием B::fun
.
class A
{
public:
A(){}
void fun(){
std::wcout << "FunA" << std::endl;
}
};
class Invoker
{
public:
Invoker(){}
template <typename Handler>
void invoke(Handler f)
{
f();
}
};
class B
{
public:
B(){}
template <typename Handler>
void BFun(Handler fun_p)
{
Invoker v;
v.invoke(boost::bind(&B::fun, this, fun_p)); <------- how to pass param. Not placeholder
}
template <typename Handler>
void fun(Handler func)
{
func();
std::wcout << "FunB" << std::endl;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
A a;
B b;
b.BFun(boost::bind(&A::fun, &a));
return 0;
}