头文件问题
//Node.h
//----------------------------------------------
#include <iostream>
using namespace std;
enum Error_code{success,overflow,underflow};
template<typename type>
struct Node
{
type entry;
Node * next;
Node();
Node(type,Node * add_on=NULL);
};
template<typename type>
inline Node<type>::Node()
{
next=NULL;
}
template<typename type>
inline Node<type>::Node(type item, Node * add_on)
{
entry=item;
next=add_on;
}
//--------------------------------------------------------------
//Stack.h
//--------------------------------------------------------------
template<typename type>
class Queue
{
public:
Queue();
bool empty()const;
bool full()const;
int size()const;
void clear();
Error_code append(const type item);
Error_code serve();
Error_code retrieve(type& item)const;
Error_code serve_and_retrieve(type &item);
void prin()const;
~Queue();
Queue(const Queue &);
void operator = (const Queue &);
protected:
Node<type> * tail;
};
//-----------------------------------------------------------
//Queue.h
//-----------------------------------------------------------
template<typename type>
class Stack
{
public:
Stack();
bool empty()const;
Error_code push(const type &);
Error_code pop();
Error_code top(type &)const;
void prin()const;
~Stack();
Stack(const Stack &);
void operator = (const Stack &);
protected:
Node<type> *top_node;
};
//------------------------------------------------------
如上我的Stack和Queue中都要调用Node.h。
但如果有个文件同时用到Stack 和 Queue时,就会出现重复定义。
如何解决呢?(不要告诉我放在一个头文件里:))