Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- JavaScript
- Callback
- channel
- File
- window
- Sync
- 책
- 영화
- GO 언어
- package
- API
- write
- Python
- json
- FOR
- c++
- Linux
- Close
- install
- C
- Golang
- 리뷰
- tcp
- go
- bitcoin
- go언어
- mutex
- range
- windows
- http
Archives
- Today
- Total
Code Habit
[c/c++] class 간 callback 설정 본문
has-a 모델의 두개의 클래스 간 정보를 주고 받기 위해서는 callback을 활용할 수 있다. 예를들어 class A가 class B를 갖고 있다고 하자. A클래스 객채에서는 B클래스에 있는 변수나 함수를 사용하기 용이하지만 B클래스 객체에서는 A클래스에 접근하기 힘들다. 이럴때 callback을 이용하여 B클래스에서 A클래스에 있는 변수나 함수에 접근할 수 있다. ( 보통 B클래스 작업을 마무리 하고 A클래스에 통보할 일이 필요할 때 이를 활용하게 된다.)
ex)
class Callback {
public:
// 구현은 이를 상속하는 클래스에서 하기 때문에
// virtual 즉, 가상의 함수로 선언한다.
virtual void done() = 0;
};
class B {
public:
// callback 주소를 담는다.
void SetCallback(Callback* _c) { c = _c; }
Callback* c;
};
class A : public Callback // class callback을 상속함.
{
public:
// callback 함수 정의
virtual void done() { printf("다먹음 !"); }
B b;
};
Callback 클래스를 선언하고 이를 A 클래스에서 상속 한다. 위와같이 구성하면 객체 B를 선언하고 사용할때 (Callback*) c에 A 클래스 객체를 담아 사용할 수 있다.