16.4 類模板成員
2. QueueItem類
//QueueItem.h
#ifndef QUEUEITEM_H
#define QUEUEITEM_H
template <class Type> class QueueItem;
#include "QueueItem.cpp"
#endif
//QueueItem.h
#ifndef QUEUEITEM_H
#define QUEUEITEM_H
template <class Type> class QueueItem;
#include "QueueItem.cpp"
#endif//QueueItem.cpp
#include "stdafx.h"
template <class Type>
class QueueItem
{
QueueItem(const Type &t):item(t), next(0){}
Type item;
QueueItem *next;
};
//QueueItem.cpp
#include "stdafx.h"
template <class Type>
class QueueItem
{
QueueItem(const Type &t):item(t), next(0){}
Type item;
QueueItem *next;
};3. Queue類
//Queue.h
#ifndef QUEUE_H
#define QUEUE_H
template <class Type>
class Queue;
#include "Queue.cpp"
#endif
//Queue.h
#ifndef QUEUE_H
#define QUEUE_H
template <class Type>
class Queue;
#include "Queue.cpp"
#endif//Queue.cpp
#include "stdafx.h"
#include "QueueItem.h"
template <class Type>
class Queue
{
public:
Queue():head(0), tail(0){}
Queue(const Queue &Q):head(0), tail(0)
{copy_elems(Q);}
Queue& operator=(const Queue&);
~Queue(){destroy();}
Type& front()
{return head->item;}
const Type &front() const{return head->item;}
void push(const Type &);
void pop();
bool empty() const
{return head==0;}
private:
QueueItem<Type> *head;
QueueItem<Type> *tail;
void destroy();
void copy_elems(const Queue&);
};
摘自 xufei96的專欄