2013-07-14 237 views
1

我得到了那个错误,当我使用类时我得到了这个错误功能指针。我的功能 'OPE' 功能如何解决错误:无法在作业中将'double(evaluateator :: *)(double,double)'转换为'double(*)(double,double)'

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

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

指向函数的指针与指向成员函数的指针不相同。 – juanchopanza

+0

我的答案解决了您的问题吗?如果是这样,您应该通过点击旁边的复选标记来接受它。谢谢! :) – 0x499602D2

回答

1

此:

double (*ope)(double, double); 

应该是:

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

,因为你使用的是成员指针。

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; 
} 
相关问题