如何从函数向std::bind传递参数 我正在C++ 11上工作。< /P>

如何从函数向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

我想在一个类中编写一个函数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服务类
{
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 ));
}