0

例如,如果我有

deque<int> a;

而我想用一个函数指针指向a.front()a.back()a.push_front()a.push_back()我能做到吗?如果是,如何?

4

2 回答 2

0

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

template<typename T>
T deque_front(std::deque<T> *q) {
  return q->front();
}
于 2012-09-27T02:39:48.713 回答
0

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

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

于 2012-09-27T02:44:17.870 回答