2013-07-14 5 views
1

У меня эта ошибка, когда я работаю с классами, я получил эту ошибку, используя указатели на функцию. Моя функция функция 'опе', как я могу решитьerror: не может преобразовать 'double (оценщик :: *) (double, double)' to '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; 
} 
Смежные вопросы