-
std::bind 사용 예제프로그래밍/c++ 2015. 10. 25. 21:53반응형
0. 반환/인자 없는 함수 바인드
123456void do_something(){// do something...}std::function<void()> func = std::bind(do_something);cs 1. 반환 있고 인자 없는 함수 바인드
1234567int do_something(){// do something...return 0;}std::function<int()> func = std::bind(do_something); // // function의 템플릿 부분을 int()cs 2. 반환 있고 인자 받는 함수 바인드
1234567int 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를 같이 넣어줘야 한다.
12345678910111213141516171819202122232425class 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 반응형'프로그래밍 > c++' 카테고리의 다른 글
boost::uuids::uuid를 std::unordered_map과 사용하기 (0) 2015.11.05 다양한 데이터 타입의 변수. boost::variant (0) 2015.11.02 unique_ptr 캐스팅 std::unique_ptr<Derived> => std::unique_ptr<Base> (0) 2015.10.18 C++11 람다를 보다 깔끔하게 쓰는 방법 (0) 2015.09.19 boost::system::error_code를 std::error_code로 바꿔주기 (0) 2015.07.26