函数指针指向STL容器的成员函数

时间:2012-09-27 02:36:17

标签: function pointers stl

例如, 如果我有

deque<int> a;

我希望使用指向a.front()a.back()a.push_front()a.push_back()的函数指针,我可以实现吗?如果是,怎么样?

2 个答案:

答案 0 :(得分:0)

由于需要传递this,指向成员函数的指针是与常规指针不同的函数指针类型。最好的解决方案是实现一个包装函数:

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

答案 1 :(得分:0)

要调用(非静态)成员函数,需要一个对象来调用它(以及函数的参数)。这是通过让成员函数采用(隐藏)来实现的 额外参数,this(有效)。

如果您正在使用c ++ 11,您可以编写一个lambda来执行此操作,或使用std::bind将双端队列的实例和成员函数绑定在一起。