2012-09-27 3 views
0

의 멤버 함수 포인터 포인트 기능 할 제가는 STL 컨테이너 예

deque<int> a; 

있고 I가 달성 할 수 I는 a.front(), a.back()a.push_front(), a.push_back() 함수 포인터를 사용하려면? 그렇다면 어떻게?

답변

0

this을 전달해야하기 때문에 멤버 함수에 대한 포인터는 일반 포인터와 다른 유형의 함수 포인터입니다. 가장 좋은 방법은 같은 래퍼 함수를 ​​구현하는 것입니다 :

template<typename T> 
T deque_front(std::deque<T> *q) { 
    return q->front(); 
} 
0

당신이 그것을 호출하는 객체 (뿐만 아니라 함수의 매개 변수)를 필요로하는 (비 정적) 멤버 함수를 호출합니다. 이는 멤버 함수가 (숨겨진) 추가 매개 변수 this (효과적으로)을 가짐으로써 구현됩니다.

C++ 11을 사용하는 경우 람다를 작성하거나 std::bind을 사용하여 deque와 멤버 함수의 인스턴스를 함께 바인딩 할 수 있습니다.

관련 문제