【问题标题】:can function pointer point to member function of STL container函数指针可以指向STL容器的成员函数吗
【发布时间】:2012-09-27 02:36:16
【问题描述】:

例如, 如果我有

deque<int> a;

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

【问题讨论】:

    标签: function pointers stl


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-08-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多