다음 코드가 컴파일되고 작동하는 이유를 이해하지 못합니다.
template<typename Predicate>
void foo(Predicate p) {
}
bool g(int n) {
}
void user(int n) {
foo(g);
}
foo
데이터 구조에서 실행되는 함수 객체를 가져와야하지만 방법을 더 간단하게 만들었습니다. 왜냐하면 내가 이해하지 못하는 것은 이것이 어떻게 작동 할 수 있다는 것입니다. 메서드는 객체가 아닙니다. 이를 수행하는 일반적인 방법은 새 클래스를 만들고 재정의 operator()
한 다음 해당 클래스의 인스턴스를 보내는 것입니다.
이 경우 Predicate 매개 변수는 유형의 함수 포인터로 대체됩니다 bool (*func) (int)
. 그게 잘못된 건 없어 ...
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다