在map函数中调用C ++指针方法

时间:2016-02-04 15:36:56

标签: c++ pointers boost map-function

在我的类AID中,我有三个拟合曲线函数:LastStateFitting,LinearCurveFitting和QuadCurveFitting。另一个功能选择哪一个最合适。我在地图中存储了指针方法(boost :: unordered_map):

typedef enum predMethod{LAST, LINEAR, QUAD} predMethod;
    predMethod method;
typedef double*(AID::*fitting)(double[3]);
    double * LastStateFitting(double x[3]);
    double * LinearCurveFitting(double x[3]);
    double * QuadCurveFitting(double x[3]);
    const boost::unordered_map<predMethod, fitting> fittingMap = map_list_of
        (LAST, &AID::LastStateFitting)
        (LINEAR, &AID::LinearCurveFitting)
        (QUAD, &AID::QuadCurveFitting);

我不明白我是如何做到这些功能的。现在,我已经完成了:

for ( int fit = LAST; fit != QUAD; fit++ )
{
    predMethod pm = static_cast<predMethod>(fit);
    double pred[3] = (*fittingMap.at(pm))(x);

但是这给了我:

  

错误:间接需要指针操作数         (&#39; mapped_type&#39;(又名&#39; double (AID :: )(double *)&#39;)无效)                   double pred [3] =(* fittingMap.at(pm))(x);

因此我的问题是:如何在地图内调用方法指针?

编辑:方法指针的一些帖子已经回答(herehere)。但是在这里,由于地图container.h,它仍然无法正常工作。

0 个答案:

没有答案