프로그래밍/예전글
[c++11] std function으로 delegate(callback)구현하는 법
Cat체셔
2015. 5. 25. 16:25
예전에 만들었던 인앱 콜백을 통해 예를 들겠습니다.
선언
std::function<void(std::string productID, bool success)> inappRequestCallback;
std::function<return_type(arguments,..)> 형태로 변수를 선언합니다.
위의 예제에서는 인앱의 productID와 성공여부를 넘겨받습니다.
사용
void StoreLayer::BuyTest(string productID, bool success)
{
}
inappRequestCallback = bind(&TitleLayer::BuyTest, this, "", true);
inappRequestCallback();
or
inappRequestCallback = bind(& StoreLayer::BuyTest, storeLayer, placeholders::_1, placeholders::_2);
inappRequestCallback("", true);
bind함수를 통해 delegate(callback)를 등록시킵니다.
인자에 대해 두가지 방법으로 세팅할 수 있는데
하나는 미리 넘겨줄 인자를 등록시켜놓는 것이고, 나머지 하나는 등록시키지 않는 것 입니다.
미리 넘겨줄 인자를 등록시켜놓은 경우,
함수 사용시, 어떤 값을 넘겨주어도 이전에 등록시켰던 인자가 전달됩니다.
하지만 placeholders를 이용하면 미리 인자를 등록시키지 않고 함수 사용시 인자를 전달 할 수 있습니다.