*콜백 ( Callback ) : 다시 호출하다 ?? 역으로 호출하다 ??
=> 어떤 상황이 일어나면 -> 이 기능을 호출해줘.
ex) UI 스킬 버튼을 누르면 -> 스킬을 쓰는 함수를 호출
class Item
{
public:
int _ownerId = 0;
int _itemId = 0;
int _rarity = 0;
};
class FindByOwner
{
public:
bool operator()(const Item* item)
{
cout << "FindByOwner~" << endl;
return (item->_ownerId == _ownerId);
}
public:
int _ownerId = 0;
};
class FindByRarity
{
public:
bool operator()(const Item* item)
{
cout << "FindByRarity~" << endl;
return (item->_rarity == _rarity);
}
public:
int _rarity = 0;
};
template<typename T>
Item* FindItem(Item* items[], int itemCnt, T* Func)
{
for (int i = 0; i < itemCnt; ++i)
{
Item* Ret = *(items + i);
if ((*Func)(Ret)) return Ret;
}
return nullptr;
}
int main()
{
Item* Items[10];
for (int i = 0; i < 10; ++i)
{
Items[i] = new Item();
Items[i]->_ownerId = i + 1;
Items[i]->_rarity = i + 1;
}
FindByOwner byOwner;
byOwner._ownerId = 2;
FindByRarity byRarity;
byRarity._rarity = 9;
Item* Ret = FindItem(Items, 10, &byOwner);
Item* Ret2 = FindItem(Items, 10, &byRarity);
for (int i = 0; i < 10; ++i) delete Items[i];
return 0;
}
본 내용은 인프런의 루키스님 강의를 듣고 정리한 내용입니다.
'프로그래밍 > C++' 카테고리의 다른 글
#56. list (0) | 2022.07.21 |
---|---|
#55. vector (0) | 2022.07.21 |
#53. 클래스 템플릿 (0) | 2022.07.20 |
#52. 함수 템플릿 (0) | 2022.07.20 |
#51. 함수 객체 (0) | 2022.07.20 |