“unaryyy”尚未宣布

时间:2011-11-17 03:44:23

标签: c++ inheritance

对不起伙计们!我的不好......我应该发布我的主要功能。

我正在实施反向抛光符号计算器,然后我遇到了这个错误,我无法想出任何一种线索......

#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'函数尚未声明。

1 个答案:

答案 0 :(得分:4)

  

a.unaryy(堆栈[P + 1],S);

应该是

 a->unaryy(stack[p+1],s); 

->应该用于使用指针调用方法