프로그래밍/예전글

[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::_1placeholders::_2);

inappRequestCallback("", true);


bind함수를 통해 delegate(callback)를 등록시킵니다.

인자에 대해 두가지 방법으로 세팅할 수 있는데

하나는 미리 넘겨줄 인자를 등록시켜놓는 것이고, 나머지 하나는 등록시키지 않는 것 입니다.

미리 넘겨줄 인자를 등록시켜놓은 경우,
함수 사용시, 어떤 값을 넘겨주어도 이전에 등록시켰던 인자가 전달됩니다.

하지만 placeholders를 이용하면 미리 인자를 등록시키지 않고 함수 사용시 인자를 전달 할 수 있습니다.