오븐 노트

[C++] 콜백 함수 본문

Develop/C++

[C++] 콜백 함수

오 븐 2023. 5. 18. 05:30
#include <iostream>
using namespace std;

class Item
{
public:

public:
    int _itemId = 0;
    int _rarity = 0;
    int _ownerId= 0;
};

class FindByOwnerId
{
public:
    bool operator()(const Item* item)
    {
        return (item->_ownerId == _ownerId);
    }

public:
    int _ownerId;
};

class FindByRarity
{
public:
    bool operator()(const Item* item)
    {
        return (item->_rarity >= _rarity);
    }

public:
    int _rarity;
};

template<typename T>
Item* FindItem(Item items[], int itemCount, T selector)
{
    for (int i = 0; i < itemCount; i++)
    {
        Item* item = &items[i];

        if (selector(item))
            return item;

        return item;
    }

    return nullptr;
}

int main()
{
    // 콜백 (Callback) : 다시 호출하다, 역호출
    // 게임 제작 시 콜백의 개념이 자주 등장
    // 특정 상황이 생기면 -> 특정 기능 실행
    // ex) UI 스킬 버튼을 누르면 -> 스킬을 쓰는 함수를 호출

    Item items[10];
    items[3]._ownerId = 100;
    items[8]._rarity = 2;

    FindByOwnerId functor1;
    functor1._ownerId = 100;

    FindByRarity functor2;
    functor2._rarity = 1;

    Item* item1 = FindItem(items, 10, functor1);
    Item* item2 = FindItem(items, 10, functor2);

    return 0;
}

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인프런 | 강의
 
C++ 카테고리의 글은 인프런 Rookiss님의 강의를 공부하며 정리하는 내용입니다.
이미 알고 있는 내용도 다시 정리 되어있을 수 있습니다.

 

모든 글은 제가 공부하기 위해 작성합니다.

'Develop > C++' 카테고리의 다른 글

[C++] vector #2  (0) 2023.05.29
[C++] vector #1  (0) 2023.05.18
[C++] 템플릿 기초 #2  (0) 2023.05.03
[C++] 템플릿 기초 #1  (0) 2023.05.03
[C++] 함수 객체  (0) 2023.05.01