작성한 코드입니다.
#include <iostream>
#include <string>
using namespace std;
class Stack;
class Stack{
int size;
int* mem;
int tos;
public:
Stack(int size=10){
this->size=size;
mem=new int [size];
tos=-1;
}
~Stack(){delete[] mem;}
friend Stack& operator <<(Stack& stack,int& n);
friend Stack& operator >>(Stack& stack,int& n);
bool operator !();
};
Stack& operator <<(Stack& stack,int& n)
{
stack.mem[++stack.tos]=n;
return stack;
}
Stack& operator >>(Stack& stack,int& n)
{
n=stack.mem[stack.tos--];
return stack;
}
bool Stack::operator!(){
if(tos==-1) return true;
else return false;
}
int main(){
Stack stack;
stack << 3 << 5 << 10;
while(true){
if(!stack) break;
int x;
stack >> x;
cout << x << ' ';
}
cout << endl;
}
현재 오류가 잡히는데 <<3 부분에서
이항 '<<' : 오른쪽 피연산자로 'int' 형식을 사용하는 연산자가 없거나 허용되는 변환이 없습니다.
이러는데 어떻게 해결해야죠? 연산자를 저런식으로 작성해서 3,5,10을 푸시해서 10 5 3 이런식으로 출력하려고 합니다.
댓글 0