프로그래밍/C++

#54. 콜백함수

코딩하는상후니 2022. 7. 20. 22:14

 

*콜백 ( 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