서문:
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:
|
hi~
Welcome to this chat room.
|
|