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 |
Tags
- C
- c++
- go
- write
- 영화
- FOR
- Python
- window
- package
- range
- 리뷰
- tcp
- GO 언어
- json
- go언어
- 책
- Callback
- JavaScript
- http
- windows
- install
- mutex
- File
- Sync
- bitcoin
- Linux
- channel
- Golang
- API
- Close
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 클래스 객체를 담아 사용할 수 있다.