如何从函数向std::bind传递参数 我正在C++ 11上工作。< /P>
我想在一个类中编写一个函数funA,它绑定同一个类中的另一个函数funB。funB函数是funA函数中的一个参数。 funcA的语法是什么? 我尝试使用std::function func,但无法编译。 请解释一下 谢谢如何从函数向std::bind传递参数 我正在C++ 11上工作。< /P>,c++,c++11,std-function,stdbind,C++,C++11,Std Function,Stdbind,我想在一个类中编写一个函数funA,它绑定同一个类中的另一个函数funB。funB函数是funA函数中的一个参数。 funcA的语法是什么? 我尝试使用std::function func,但无法编译。 请解释一下 谢谢 class ServiceClass { typedef std::function<void(const int&, const int&)> ServiceCallBack; public: void ServiceFunc(ServiceCa
class ServiceClass
{
typedef std::function<void(const int&, const int&)> ServiceCallBack;
public:
void ServiceFunc(ServiceCallBack callback)
{
callback(1,2);
}
};
class服务类
{
typedef std::函数ServiceCallBack;
公众:
void ServiceFunc(服务回调)
{
回调(1,2);
}
};
class-MyClass
{
公众:
服务类服务类;
void myFunction(int i)
{
请提供一个片段。上有一个示例程序。我想你应该先阅读并尝试。如果之后还有什么不清楚的地方,就用一些示例代码发布你的疑问。我为你将其编辑到问题中。你能编辑你的问题以包含关于该问题的更多细节吗?你是在问如何使用std::bind
使用&MyClass::myFunction
?是的,我的问题是函数bindFunction可以接受任何参数(相同类型的函数)可以绑定。函数bindFunction的参数的正确语法是什么?可能的重复:简单地发布一些代码并没有太大帮助。你能解释一下你的代码吗?这样其他人就可以理解并从你的答案中学习,而不只是从网上复制和粘贴一些代码。函数的格式是问题是可以用来绑定函数指针的ion指针。typedef void(MyClass::*MY_CLASS_PTR)(int);在定义指向类内函数的函数指针时,我们必须给出类的名称。在我尝试时,这一点丢失了。因此函数可能看起来像这样。void testFunctions(MY_CLASS_PTR fptr)@Robert:答案不是从任何网站复制的。它是示例程序的一部分。参考
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 ));
}
}
};
typedef void(MyClass::*MY_CLASS_PTR)(int);
// function which takes function pointer as parameter
void testFunctions( MY_CLASS_PTR fptr)
{
// fptr should have which function to bind
serviceClass.ServiceFunc( std::bind( fptr , this, std::placeholders::_1 ));
}