저작권 : 동의없이 원래 기사, 무단 전재를 금지합니다 https://blog.csdn.net/zmlovelx/article/details/82686123
++ 11 c를 기능을 사용하여 달성 할 수 있습니다 수행하는 방법에는 Qt는 존재하지 않는 경우는 알아야 중고 Qt는, 신호 슬롯,,, 디커플링에 사용하고 사용하기 쉬운 슈퍼 콜백
네트워크 물론 거기 많은 구현에 직접 사용될 수 있습니다.
예를 들면 :
https://github.com/pbhogan/Signals
샘플 코드 :
// Using Delegate.h
void MyFunc( int x )
{
printf( "MyFunc( %d )", x );
}
// Using Signal.h
class Button
{
public:
Signal2< int, float > updateLabel;
void Click( void )
{
updateLabel( 2, 34.5 );
}
};
class Label
{
public:
virtual void Update( int i, float f )
{
printf( "Update( %d, %.1f )", i, f );
}
};
int main()
{
Delegate1< int > delegate;
delegate.Bind( & MyFunc );
delegate( 5 );
Button myButton;
Label myLabel1;
Label myLabel2;
myButton.updateLabel.Connect( & myLabel1, & Label::Update );
myButton.updateLabel.Connect( & myLabel2, & Label::Update );
myButton.Click();
return 0;
}
매우 편리하지, 다른 프로젝트는 다음과 같습니다
https://github.com/NoAvailableAlias/nano-signal-slot
http://libsigc.sourceforge.net/
http://sigslot.sourceforge.net/
여러 정상을 달성되지 않습니다 것처럼 사실, 여기 QT와 같은 수요가있다처럼, 당신은 당신이 구현을 변경하는 콜백을 호출해야하는 경우이 코드를 실행하기 위해 보낸 사람 또는 reciver입니다 스레드에 바인딩 콜백을 지정할 수 있습니다, 간단하게 내려다 보았다으로 설명 기능. 마지막으로,이 방법으로 얻을 자체 스레드 실행도가 상대적으로 간단하다.
저자 : ++ 하하 교회 c를 갈 잘 생긴 너무 두려워 : 31843264