반응형

#include <boost/signal.hpp> <= 요걸 일단 선언해야 한다. 

class Test
{
public:
typedef boost::signal<bool (const Event& arg), SignalTrue> KeySignal;
KeySignal OnKeyDown;
};
위의 코드에서 signal< void (const float time)> TimeSignal; 이런식으로 호출될 수도 있다. 
위의 코드는 편의상 SignalStopWhenResultTrue라는 객체를 선언했는데, 내부적으로 처리(주로 구분용)되는 것을 하면서 인자로 활용되는 녀석을 선언하는 것이고, 필요 없으면, 그냥 없이 선언해도 된다. 
뒤에 오는 두번째 인자는 키값이라고 보면 된다.

connect()함수를 호출하게 되는데 이때, boost::bind()라는 함수를 사용하게 된다. 
이때, 첫번째 인자는 호출된 함수와 해당 호출될 객체의 주소(파생된 객체가 선언될 경우도 있으니...)

test_.OnKeyDown.connect(boost::bind(&GUISystem::OnKeyDown, &guiSystem_, _1)); <= 인자가 하나일때
test_.OnHotkeyCommand.connect(boost::bind(&GUISystem::OnHotkeyCommand, &guiSystem_, _1, _2)); <= 인자가 두개일때


등록 콜백함수 지우기
boost::signal::connection a = timeManager_->OnRunUpTime.connect(boost::bind(&class::OnRunUpTime, this, _1));
// ....
a.disconnect();


                   http://jangyeol.springnote.com/pages/412787
반응형

+ Recent posts