(C++ : Function-Pointer) 콜백 함수

Posted by : at

Category : Cpp


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;
};

Item* FindItem(Item items[], int itemCount, /* Functor를 넘겨주고 싶다 */)
{
    for(int i = 0; i < itemCount; i++)
    {
        Item* item = &items[i];

        return item;
    }
}

int main()
{
    Item items[10];

    FindItem(items, 10, /*Functor*/);
}
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;
    }
}

int main()
{
    Item items[10];

    FindByOwnerId functor1;
    functor1._owner = 10;

    FindByRarity functor2;
    functor2._rarity = 3;

    Item* i = FindItem(items, 10, functor1);
    Item* i2 = FindItem(items, 10, functor2);
}

About Taehyung Kim

안녕하세요? 8년차 현업 C++ 개발자 김태형이라고 합니다. 😁 C/C++을 사랑하며 다양한 사람과의 협업을 즐깁니다. ☕ 꾸준한 자기개발을 미덕이라 생각하며 노력중이며, 제가 얻은 지식을 홈페이지에 정리 중입니다. 좀 더 상세한 제 이력서 혹은 Private 프로젝트 접근 권한을 원하신다면 메일주세요. 😎

Star
Useful Links