1. 콜백 함수

코드를 다른 코드의 인수로서 넘겨 줌.

ex) 아이템을 여러가지 조건으로 찾기

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 nullptr;
}
int main()
{
    Item items[10];
    
    FindByOwnerId functor1;
    functor1._ownerId = 100;

    FindByRarity functor2;
    functor2._rarity = 1;

    FindItem(items, 10, functor1);
    FindItem(items, 10, functor2);
    
}

FindItem 함수의 세번째 매개변수로 각 설정한 조건을 바로 넘겨줬다.

이는 콜백 함수에 해당한다.

'기초 C++ 스터디 > 객체지향' 카테고리의 다른 글

8-5. 템플릿 기초(2) - 클래스 템플릿  (0) 2023.06.08
8-4. 템플릿 기초(1)  (0) 2023.06.08
8-3. 함수 객체(Functor)  (0) 2023.06.08
8-2. 함수 포인터(2)  (0) 2023.06.08
8-1. 함수 포인터(1)  (0) 2023.06.08