특징 :
콜백 함수는 전달인자로 다른 함수에 전달되는 함수를 뜻한다.
함수의 동작을 완료하기 위해 외부 함수 내부에서 호출된다.
콜백함수는 함수 포인터 또는 람다 함수 등을 이용해 외부 함수에 전달된다.
예시 :
#include <iostream>
class Item
{
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 itemCnt, T selector)
{
for (size_t i = 0; i < itemCnt; i++)
{
Item* item = &items[i];
if (selector(item))
return item;
}
return nullptr;
}
int main()
{
Item items[10] = {};
items[3].ownerId = 10;
items[8].rarity = 2;
FindByOwnerId functor1; // 함수 객체
functor1.ownerId = 10;
FindByRarity functor2; // 함수 객체
functor2.rarity = 1;
Item* item1 = FindItem(items, 10, functor1);
Item* item2 = FindItem(items, 10, functor2);
return 0;
}
'DirectX11 > Rookiss' 카테고리의 다른 글
함수 객체 (Function Object) (0) | 2024.03.16 |
---|---|
함수 포인터 (0) | 2024.03.16 |
비트 연산 (0) | 2024.03.16 |
Modern C++_2 (0) | 2024.03.16 |
Mordern C++ (2) | 2024.03.15 |