C++11的std::function和std::bind用法

代码示例

/*
demo:
std::function<>和std::bind()配合 实现回调函数
*/

#include 
#include 
using namespace std;
#include 
#include 

typedef std::function ReplyCb;

//网络请求类(请求登陆)
class ReqLogin
{
public:
	ReqLogin();
	~ReqLogin();

	void request(ReplyCb successHandler, ReplyCb errorHandler, bool heap = false)
	{
		Sleep(1);
		//... do somethings

		//回调发送方:告诉他人登陆成功
		successHandler("suc");
	}

private:

};

ReqLogin::ReqLogin()
{
}

ReqLogin::~ReqLogin()
{
}

//用户管理类
class UserManager
{
public:
	UserManager();
	~UserManager();

	void login_func() {
		ReqLogin login;
		login.request(std::bind(&UserManager::onLoginReply, this, std::placeholders::_1),
			NULL);

	}

	//回调接收方
	void onLoginReply(const string& msg) {
		cout << "onLoginReply()..." << msg << endl;
	}
private:

};

UserManager::UserManager()
{
}

UserManager::~UserManager()
{
}


int main()
{
	UserManager UM;
	UM.login_func();

	return 0;
}

   【精选】【C++】C++11的std::function和std::bind用法【精选】【C++】C++11的std::function和std::bind用法详解_c++中的std中的方法-CSDN博客

你可能感兴趣的:(C++,c++,开发语言)