例如,如果我有
deque<int> a;
而我想用一个函数指针指向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,您可以编写一个 lambda 来执行此操作,或者使用std::bind
将 deque 的实例和成员函数绑定在一起。