Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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
Archives
Today
Total
관리 메뉴

Code Habit

[c/c++] class 간 callback 설정 본문

카테고리 없음

[c/c++] class 간 callback 설정

코드베어 2021. 7. 7. 18:35

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 클래스 객체를 담아 사용할 수 있다.