例如, 如果我有
deque<int> a;
我希望使用指向a.front()
,a.back()
和a.push_front()
,a.push_back()
的函数指针,我可以实现吗?如果是,怎么样?
答案 0 :(得分:0)
由于需要传递this
,指向成员函数的指针是与常规指针不同的函数指针类型。最好的解决方案是实现一个包装函数:
template<typename T>
T deque_front(std::deque<T> *q) {
return q->front();
}
答案 1 :(得分:0)
要调用(非静态)成员函数,需要一个对象来调用它(以及函数的参数)。这是通过让成员函数采用(隐藏)来实现的
额外参数,this
(有效)。
如果您正在使用c ++ 11,您可以编写一个lambda来执行此操作,或使用std::bind
将双端队列的实例和成员函数绑定在一起。