클래스의 다른 푸시 및 팝 함수에서 '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;
}
'arr' 클래스의 멤버 임시 변수 아니다 – Vivick
대부분의 코드 너 게시 된 내용은 부적절합니다. [mcve]를 게시하는 것이 좋습니다. – juanchopanza
@Vivick : 문자 그대로의 의미에서 일시적이지만 일반적으로 표현식 평가에서 생성 된 이름이없는 객체에 대해서는이 용어를 사용합니다. 대신에 지역 변수 *라고 말할 수 있습니다. –