GSI

#include <iostream>

 

using namespace std;

 

typedef void(*F)(int);

 

class QSpinBox

{

       int data;

      F handler;   // call back 함수 이게 포인트. 값이 변경되면 이 함수를 통해서 콜백을 한다.

public:

       QSPinBox(F f = 0 ) : handler(f) { }

       void SetValue(int n)

       {

             data = n;     // data가 변경되었다

             valueChanged(data);

       }

       void up() { ++data; valueChanged(data);   }

       void Down() { --data; valueChanged(data); }

 

private:

       // Spin은 내부 상태가 바뀔때마다 valueChanged가 호출되는데 여기서 외부로 알려지게 된다 - Signal 이라고 부른다.

       void valueChanged(int n)

       { // 여기서 callback handler를 관리하자

             if(handler != 0)

                    handler(n);

       }

 

 

};

 

int main()

{

       QSpinBox s;

       s.SetValue(100);

       s.Up();

}

 

// SpinBox 의 상태가 변경되면 외부에 알려준다 -> callback


(펌) - http://blog.naver.com/arcyze?Redirect=Log&logNo=60041494408

Posted by gsi
: