【问题标题】:error: cannot convert 'double (evaluator::*)(double, double)' to 'double (*)(double, double)' in assignment错误:无法在赋值中将“double (evaluator::*)(double, double)”转换为“double (*)(double, double)”
【发布时间】:2013-07-14 15:41:23
【问题描述】:

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

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

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

【问题讨论】:

  • 指向函数的指针与指向成员函数的指针不同。
  • 我的回答解决了你的问题吗?如果是这样,您应该通过单击它旁边的复选标记来接受它。谢谢! :)

标签: c++ function pointers scope


【解决方案1】:

这个:

double (*ope)(double, double);

应该是:

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

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

【讨论】:

    【解决方案2】:

    使用以下声明:

    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;
    }
    

    【讨论】:

      猜你喜欢
      • 2020-10-02
      • 1970-01-01
      • 1970-01-01
      • 2016-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-08
      • 1970-01-01
      相关资源
      最近更新 更多