콜백 신호 슬롯을 사용하는 C ++ 아주 쉽게

저작권 : 동의없이 원래 기사, 무단 전재를 금지합니다 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

추천

출처blog.csdn.net/zmlovelx/article/details/82686123