对不起伙计们!我的不好......我应该发布我的主要功能。
我正在实施反向抛光符号计算器,然后我遇到了这个错误,我无法想出任何一种线索......
#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;
...
}
然后,在调试时,编译器给了我一个抬头,在main函数中,我的'unaryy'函数尚未声明。
答案 0 :(得分:4)
a.unaryy(堆栈[P + 1],S);
应该是
a->unaryy(stack[p+1],s);
->
应该用于使用指针调用方法