서문:

boost::bind에 일반함수가 아닌 멤버함수를 사용할 경우 아래와 같이 사용한다.


프로토타입:

boost::bind(/*boost::type<T>(), */ &클래스::멤버함수, 클래스 포인터, 인수들....);


예제:

#include <vector>
#include <algorithm>
#include <iostream>
#include <string>
#include <boost/bind.hpp>


std::vector<std::string> recent_msgs;

struct Person
{
	void delever(std::string a1)
	{
		std::cout << a1 << std::endl;
	}
} person;


int main()
{
	//Input Recent Message
	recent_msgs.push_back("hi~");
	recent_msgs.push_back("Welcome to this chat room.");

	//Enter to room
	std::for_each(recent_msgs.begin(), 
		recent_msgs.end(), 
		boost::bind( 
			// 리턴 타입. 생략가능. 컴파일러마다 다르므로 안쓰는게 좋은 것 같다.
			/*boost::type<void>(), */
			// 멤버함수의 주소
			&Person::delever,
			// 주의! 주소가 아닌 값이 입력되면 객체는 복사되어 들어간다.
			&person,						
			_1));

	return 0;
}


Output:
1
2
hi~
Welcome to this chat room.

+ Recent posts