작성한 코드입니다.


#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 이런식으로 출력하려고 합니다.