프로그래밍/c++
std::bind 사용 예제
제페
2015. 10. 25. 21:53
반응형
0. 반환/인자 없는 함수 바인드
1 2 3 4 5 6 | void do_something() { // do something... } std::function<void()> func = std::bind(do_something); | cs |
1. 반환 있고 인자 없는 함수 바인드
1 2 3 4 5 6 7 | int do_something() { // do something... return 0; } std::function<int()> func = std::bind(do_something); // // function의 템플릿 부분을 int() | cs |
2. 반환 있고 인자 받는 함수 바인드
1 2 3 4 5 6 7 | int do_something(int value) { // do something... return value; } std::function<int(int)> func = std::bind(do_something, placeholders::_1); // // function의 템플릿 부분을 int(int) | cs |
여기서 나오는 placeholder는 내용물은 없어도 위치를 잡아주는 더미 이미지 같은 것을 뜻한다.
웹 페이지 보면 내용물은 없는데 여기에 무슨 이미지가 올거야. 라고 해두는 공간잡이(밑 그림에서의 300x250 같은 거)
3. 인자 받는 멤버 함수 바인드
일반 함수와 다른 점은 placeholder를 넣기 전에 this를 같이 넣어줘야 한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | class session { public: //... void setup() { handler = std::bind(&session::handler, this, std::placeholders::_1); // // 클래스 함수 포인터, this 포인터, placeholder } void login_handler(const PACKET& packet) { switch(packet.code) { case PACKET::REQUEST_LOGIN: //... break; } } private: std::function<void(const PACKET&)> handler; }; | cs |
반응형