错误:无法在赋值时将'double(evaluateator :: *)(double,double)'转换为'double(*)(double,double)'

时间:2013-07-14 15:41:23

标签: c++ function pointers scope

我遇到了这个错误,当我使用类时,我使用指针函数得到了这个错误。我的函数'ope'函数如何解决

    evaluator::function(){
    double (*ope) (double,double) ;
    ope=&evaluator::add;
}

double evaluator::add( double a, double b){
    return (a+b);
    }

2 个答案:

答案 0 :(得分:1)

此:

double (*ope)(double, double);

应该是:

double (evaluator::*ope)(double, double);
//      ^^^^^^^^^^^^

因为您正在使用指向成员的指针。

答案 1 :(得分:0)

使用以下声明:

double (A::*func)(double, double)

并按照以下方式拨打电话:

return ((*this).*func)(5, 4);
希望它有所帮助。

class A {
public:
    double foo();
    double foo2(double, double);
};

double A::foo() {
    double (A::*func)(double, double);
    func = &A::foo2;
    return ((*this).*func)(5, 4);
}

double A::foo2(double a, double b) {
    return a + b;
}