【发布时间】:2012-09-27 02:36:16
【问题描述】:
例如, 如果我有
deque<int> a;
我想用一个函数指针指向a.front()、a.back()和a.push_front(),a.push_back(),我能做到吗?如果是,怎么做?
【问题讨论】:
例如, 如果我有
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 将双端队列的实例和成员函数绑定在一起。
【讨论】: