"унарый" не был объявлен - PullRequest
0 голосов
/ 17 ноября 2011

Извините, ребята! Мой плохой ... Хотя я должен был опубликовать свою основную функцию.

Я реализовал калькулятор обратной польской записи, тогда я столкнулся с этой ошибкой, которую я не мог понять, какая-либо подсказка....

#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;
 ...
 }

Затем при отладке компилятор предупредил меня, что в основной функции моя 'унарная' функция не была объявлена.

1 Ответ

4 голосов
/ 17 ноября 2011

a.unaryy (стек [р + 1], с); * +1002 *

должно быть

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

-> должны использоваться методы вызова с указателями

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...