이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date |
2008/11/01 20:21:06 |
Name |
녹차한잔 |
Subject |
c++ 좀 아시는분 봐주세요.. |
//stack.h
#include <iostream>
using std::cout;
using std::endl;
template <typename Object>
class LinkedStack {
protected:
struct Node {
Object element;
Node* next;
Node(const Object& e=Object(), Node *n=NULL) : element(e),next(n) {}
};
void removeAll();
void copyFrom(const LinkedStack& ls);
private:
Node *tp;
int sz;
public:
LinkedStack();
int size() const;
bool isEmpty() const;
Object& top();
void push(const Object& e);
Object pop();
LinkedStack(const LinkedStack& ls);
LinkedStack& operator=(const LinkedStack& ls);
~LinkedStack();
};
//stack.cpp
#include "stack.h"
template <typename Object>
void LinkedStack<Object>::removeAll()
{
while (!isEmpty())
pop();
}
template <typename Object>
void LinkedStack<Object>::copyFrom(const LinkedStack& ls)
{
tp=NULL;
Node *p=ls.tp;
Node *prev=NULL;
while(p!=NULL) {
Node *v=new Node(p->element, NULL);
if(tp==NULL)
tp=v;
else
prev->next=v;
prev=v;
p=p->next;
}
sz=ls.sz;
}
template <typename Object>
LinkedStack<Object>::LinkedStack()
{
tp=NULL;
sz=0;
}
template <typename Object>
int LinkedStack<Object>::size() const
{
return sz;
}
template <typename Object>
bool LinkedStack<Object>::isEmpty() const
{
return sz==0;
}
template <typename Object>
Object& LinkedStack<Object>::top()
{
if(isEmpty())
cout << "Top of empty stack" << endl;
return tp->element;
}
template <typename Object>
void LinkedStack<Object>::push(const Object& e)
{
Node *v=new Node(e,tp);
tp=v;
sz++;
}
template <typename Object>
Object LinkedStack<Object>::pop()
{
if(isEmpty())
cout << "Pop of empty stack" << endl;
Node *old=tp;
tp=tp->next;
sz--;
Object result = old->element;
delete old;
return result;
}
template <typename Object>
LinkedStack<Object>::LinkedStack(const LinkedStack& ls)
{
copyFrom(ls);
}
template <typename Object>
LinkedStack<Object>::LinkedStack& operator=(const LinkedStack& ls)
{
if(this!=ls) {
removeAll();
copyFrom(ls);
}
return *this;
}
template <typename Object>
LinkedStack<Object>::~LinkedStack()
{
removeAll();
}
코드인데요.. 이거 선언/정의 를 같이 했을때는 에러없이 돌아가던 건데..
나눌려니까..에러나는데.. 제가 템플릿을 처음써봐서.. 그문제 같은데..
잘모르겠어서요.. 뭐가 에러일까요??
뱀다리>스택과 큐를 같이 사용할 수 있는 시나리오 있을까요?ㅠ
|
통합규정 1.3 이용안내 인용
"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
|