第16章 模板与泛型编程(7)

2014-11-24 12:26:56 · 作者: · 浏览: 4

16.4 类模板成员

2. QueueItem类

//QueueItem.h
#ifndef QUEUEITEM_H
#define QUEUEITEM_H
template class QueueItem;
#include "QueueItem.cpp"
#endif
//QueueItem.h
#ifndef QUEUEITEM_H
#define QUEUEITEM_H
template class QueueItem;
#include "QueueItem.cpp"
#endif//QueueItem.cpp
#include "stdafx.h"

template
class QueueItem
{
QueueItem(const Type &t):item(t), next(0){}
Type item;
QueueItem *next;
};
//QueueItem.cpp
#include "stdafx.h"

template
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 Queue;
#include "Queue.cpp"

#endif
//Queue.h
#ifndef QUEUE_H
#define QUEUE_H

template
class Queue;
#include "Queue.cpp"

#endif//Queue.cpp
#include "stdafx.h"
#include "QueueItem.h"

template
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 *head;
QueueItem *tail;
void destroy();
void copy_elems(const Queue&);
};

摘自 xufei96的专栏