2013-07-14 450 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; 
} 
相關問題