인프런 커뮤니티 질문&답변

Tobe님의 프로필 이미지
Tobe

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

함수 포인터 #1

FindItem함수 한 번에 만들기

해결된 질문

작성

·

283

0

typedef bool(ITEM_SELECTOR)(Item* , int);

Item* FindItem(Item items[], int itemCount, ITEM_SELECTOR* selector, int value)

{

for (int i = 0; i < itemCount; i++)

{

Item* item = &items[i];

if (selector(item, value))

return item;

}

}

위 코드에서 typedef 부분을 없애고 한 번에 만들려고 하는데

Item* FindItem2(Item items[], int itemCount, bool (*selector)(Item* item, int value)){}

이렇게 만들면 동작하지 않고

Item* FindItem(Item items[], int itemCount, bool (*selector)(Item* item, int value), int value){}

int value를 따로 받아줘야 동작하는 이유가 있나요?

답변 1

1

Rookiss님의 프로필 이미지
Rookiss
지식공유자

bool (*selector)(Item* item, int value)
여기까지는 함수의 원형이랑 관련이 있는 것입니다.
Item* FindItem(Item items[], int itemCount, ITEM_SELECTOR* selector, int value)
비유해서 보면 저 부분이죠.
그러니 아직 아이템 밸류에 해당하는 int를 받아주는 곳이 없으니 에러가 나는 것입니다.

Tobe님의 프로필 이미지
Tobe
질문자

이해되었습니다!

늦은 시간에 빠른 답변 해주셔서 감사합니다!!

Tobe님의 프로필 이미지
Tobe

작성한 질문수

질문하기