의 멤버 함수 포인터 포인트 기능 할 제가는 STL 컨테이너 예
deque<int> a;
있고 I가 달성 할 수 I는 a.front()
, a.back()
및 a.push_front()
, a.push_back()
함수 포인터를 사용하려면? 그렇다면 어떻게?
의 멤버 함수 포인터 포인트 기능 할 제가는 STL 컨테이너 예
deque<int> a;
있고 I가 달성 할 수 I는 a.front()
, a.back()
및 a.push_front()
, a.push_back()
함수 포인터를 사용하려면? 그렇다면 어떻게?
this
을 전달해야하기 때문에 멤버 함수에 대한 포인터는 일반 포인터와 다른 유형의 함수 포인터입니다. 가장 좋은 방법은 같은 래퍼 함수를 구현하는 것입니다 :
template<typename T>
T deque_front(std::deque<T> *q) {
return q->front();
}
당신이 그것을 호출하는 객체 (뿐만 아니라 함수의 매개 변수)를 필요로하는 (비 정적) 멤버 함수를 호출합니다. 이는 멤버 함수가 (숨겨진) 추가 매개 변수 this
(효과적으로)을 가짐으로써 구현됩니다.
C++ 11을 사용하는 경우 람다를 작성하거나 std::bind
을 사용하여 deque와 멤버 함수의 인스턴스를 함께 바인딩 할 수 있습니다.