• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

함수 객체 질문

21.06.17 16:49 작성 조회수 135

0

함수 객체라는것이 객체를 생성하고 그걸 () 로 오버로딩 된 함수를 호출 하는것 아닌가요??

auto findit = std::find_if(v.begin(), v.end(), FinditemByItemId(itemid)) 의 finditembyitemid는

그냥 객체를 생성해주는것아닌가요? finditembyitemid(int itemid) 라는 생성자를 통해서요. 디버깅을 해보면 저 저것만으로도 bool operator() 가 실행이 되던데 그게 자동으로 되는것인가요? 그러니깐 즉 finditembyitemdid(itemid) 이것이 조건식으로 부합되는 이유가 궁금합니다. 그저 객체를 생성하는것만 하는것이 아닌.

답변 2

·

답변을 작성해보세요.

1

find_if 코드를 보면 _pred(*_UFirst) 부분에서
operator() 를 호출하고 있습니다.
따라서 실제로 인자로 넣어준 predicate도
operator() or 함수 호출 문법을 지원해야 컴파일이 되는 것이죠.

0

starkshn님의 프로필

starkshn

2022.08.30

find_if의 마지막 인자로 넣어준 FindItemBytId(itemId)녀석은 인자를 하나를 받는 생성자를 호출한게 맞고, find_if자체적으로 마지막인자로 들어온 녀석(FindItemBytId(itemId))의 operator()를 호출하게 설계가 되어있다는 말씀이신가요??

image네 그렇습니다.

starkshn님의 프로필

starkshn

2022.08.31

답변 감사합니다!