无法从类中的其他函数访问同一类的变量

问题描述 投票:1回答:1

我无法从类中的其他push和pop函数访问我的'arr'变量。获取错误“'arr'未在此范围内声明”。它应该可以在课堂上访问。我可以静态地分配内存作为解决方案,但我想试试这个。

该程序提供反向抛光表示法。 输入 1 (A + B) O / P AB +

#include <iostream>
#include <string>
using namespace std;


class stackOperations{
  private:
    int top = -1 ;
  public:
  void allocate(int len){
    char *arr = new char[len] ;
  }
  void deallocate(){
    delete []arr ;
  }
  void push(char x){
      top++;
      arr[top] = x ;
  }
  char pop()
  {
      char temp;
      temp = arr[top];
      top--;
      return temp;
  }
};

void RPN(string exp)
{
    stackOperations st ;
    int len = exp.length();
    st.allocate(len);
    for(int i=0; i <=len; i++){
        char tmp ;
        tmp = exp[i];
        if(tmp=='('){
            st.push('(');
        }
        else if(tmp==')'){
            char y = st.pop();
            while(y != '('){
                cout << y ;
                y = st.pop();
                }
            }
        else if(int(tmp) >= 97 && int(tmp) <= 122 ) {
            cout << tmp ;   
        }
        else {
            st.push(tmp);
        }

    }
    st.deallocate();
}

int main() {
    int test ;
    string exp ;
    cin >> test;
    cin.ignore();
    while(test!=0){
        getline(cin, exp);
        RPN(exp);
        cout << endl ;
        test--;
    }
    return 0;
}
c++ class dynamic-memory-allocation
1个回答
0
投票
class stackOperations{
    private:
          int top = -1 ;
          char *arr;
     public:
      void allocate(int len){
           arr = new char[len] ;
  }
© www.soinside.com 2019 - 2024. All rights reserved.