Извините, ребята! Мой плохой ... Хотя я должен был опубликовать свою основную функцию.
Я реализовал калькулятор обратной польской записи, тогда я столкнулся с этой ошибкой, которую я не мог понять, какая-либо подсказка....
#include <iostream>
#include <string>
using namespace std;
class Exp {
protected:
string exp;
int value;
public:
Exp();
~Exp();
void setString(string s);//store conventional notation expression
void setValue(int n);//store the corresponding value of the expression
string getExp();//retrieve conventional notation expression
int evaluate();//retrieve the corresponding value of the expression
};
class unary : public Exp {
public:
void unaryyy(Expression *x,string op);
};
void unary::unaryyy(Expression *x,string op){
if(op=="ABS"){
if(x->evaluate() > 0) setValue(x->evaluate());
else setValue(-x->evaluate());
string l="| ";
l.append(x->getExp());
l.append(" |");
setString(l);
}
else if(op=="NEG"){
setValue(-x->evaluate());
string m="- ";
m.append(x->getExp());
setString(m);
}
}
...
int main(){
...
if(s=="ABS" || s=="NEG"){
unary *a = new unary;
a.unaryy(stack[p+1],s);
stack[p+1]=a;
...
}
Затем при отладке компилятор предупредил меня, что в основной функции моя 'унарная' функция не была объявлена.