묻공러
'C++/[루키스] 콜백함수' 카테고리의 글 목록

C++/[루키스] 콜백함수

C++/[루키스] 콜백함수

[STL 사전지식] 6. 콜백 함수

콜백(Call back)은 다시 호출하는, 역으로 호출하는 뜻을 가지고 있다 특히, 게임을 만들 때 이런 콜백의 개념이 자주 등장한다 간단한 실습을 통해 콜백 함수를 구현해 보자 먼저, 우리가 배운 함수 포인터로 콜백 함수를 구현하면 아래와 같이 작성이 될 것이다 class Item { public: int _itemId = 0; int _rarity = 0; int _ownerId = 0; }; Item* FindItem(Item items[], int itemCount, bool(*func)(const Item*)) { for (int i = 0; i < itemCount; i++) { Item* item = &item[i]; // 조건 체크 return item; } } 하지만, 이렇게 함수 포인터..

C++/[루키스] 콜백함수

[STL 사전지식] 5. 템플릿 기초 (2)

이번 시간에는 클래스 템플릿에 대해 알아보자 먼저 클래스 템플릿 없이 아래와 같은 코드를 작성한다고 해보자 class RandomBox { public: int GetRandomData() { int idx = rand() % 10; return _data[idx]; } public: int _data[10]; }; class RandomBoxFloat { public: float GetRandomData() { int idx = rand() % 10; return _data[idx]; } public: float _data[10]; }; int main() { srand(static_cast(time(nullptr))); // rand함수 시드설정 RandomBox rb1; for (int i = 0;..

C++/[루키스] 콜백함수

[STL 사전지식] 4. 템플릿 기초 (1)

STL을 들어가기 전 마지막 사전 지식인 템플릿에 대해 알아보자 템플릿은 함수나 클래스를 찍어내는 틀을 의미한다 1) 함수 템플릿 2) 클래스 템플릿 이렇게 두 가지 종류로 구분이 된다 이번 시간에는 함수 템플릿을 알아보고 다음 두 번째 시간에는 클래스 템플릿을 알아보도록 하자 그럼 템플릿을 어떻게 사용하는지 알아보기 전, 템플릿이 왜 필요한지 알아보자 void Print(int a){} void Print(float a){} void Print(double a){} void Print(const char* a){} 함수의 인자들의 타입에 맞게 내가 모든 함수를 위처럼 구현해 준다면 너무 귀찮을 것이다 템플릿 사용 방법을 그럼 알아보자 아래처럼 템플릿을 사용하면 훨씬 쉽게 사용이 가능해진다 templat..

C++/[루키스] 콜백함수

[STL 사전지식] 3. 함수 객체

이번 시간에는 함수 객체에 대해 알아보자 함수 객체 (Functor): 함수처럼 동작하는 객체 여기서 잠깐, 사실상 자주 쓰지도 않는 함수 포인터를 굳이 공부하고 함수 객체를 배워야 하는 이유가 무엇일까? 바로 함수 포인터의 단점을 보완한 것이 함수 객체이기 때문이다 그럼 함수 포인터의 장단점을 알아보자 함수 포인터의 장점은 무엇일까? 바로 동작을 넘겨줄 때 유용하다는 것이다 아래처럼 말이다 void Hello1(){} int main() { void (*pfunc)(); pfunc = &Hello1; (*pfunc)(); } 그러면 함수 포인터의 단점은 무엇일까? 1) 시그니처가 안 맞으면 사용할 수 없다 void Hello1() { } void Hello2(int number) { } int main..

C++/[루키스] 콜백함수

[STL 사전지식] 2. 함수 포인터 (2)

간단하게 저번 시간에 배운 함수 포인터를 복습해보자 아래와 같이 세 가지의 방식으로 함수 포인터를 만들 수 있었다 1) typedef 없이 만들기 2) typedef 함수 정의로 시작해서 만들기 3) typedef 함수 포인터 정의로 시작해서 만들기(이 부분은 조금 있다가 다룬다) int Test(int a, int b) { return a + b; } int main() { // 첫번째 방식 int (*fn1) (int, int); fn1 = &Test;// & 생략가능 // 두번째 방식 typedef int (FUNC_TYPE)(int, int); FUNC_TYPE* fn2; fn2 = &Test; // 간단하고 자주 사용하는 첫번째 방식에 익숙해져야함 } 여기서 잠깐, typedef에 대해 알아보고..

C++/[루키스] 콜백함수

[STL 사전지식] 1. 함수 포인터 (1)

STL을 공부하기 위한 사전지식 : 함수 포인터, 함수객체, 템플릿... 이번 시간에는 함수 포인터를 공부한다 함수 포인터도 결국 일반 포인터와 차이가 없기에 typedef로 정의 후, 포인터 변수로 이용하는 방식으로 사용해 보자 일반 포인터를 먼저 typedef로 정의 후, 포인터 변수로 이용해 보자 - typedef를 이용한 일반적인 변수 포인터 typedef int DATA; // typedef로 정의 DATA* pointer = &a; // 포인터 변수로 이용하기 위를 간단하게 나타내면 1) 포인터 * 2) 변수 이름 pointer 3) 데이터타입 int 그럼, 1] 함수를 typedef를 정의하고 2] 포인터 함수로 이용해 보자 - typedef를 함수에 사용해 보자 int func(int a,..