您的位置:首页 > 其它

我写的第一个模板类

2004-11-12 13:49 381 查看
    很简单的一个列表类,而且并不是很完善,仅限于在自己的程序中使用。有很多很基本的东西还没搞懂。不过我一直奇怪的是:我将这个类的声明和实现放在不同的文件中时(.h, .cpp),最后在引用用这个类的地方都会出现连接错误,无奈只能将声明和实现放在同一个文件中了(.h),模板类的编译和连接机制到底是怎样的呢?

#pragma once

template<typename NodeType>
class TQueue;

template <typename NodeType>
class QNode

template <typename NodeType>
class TQueue  

template <typename NodeType>
TQueue<NodeType>::TQueue(void)

template <typename NodeType>
TQueue<NodeType>::~TQueue(void)

template <typename NodeType> 
WORD TQueue <NodeType>::GetCount()

// Queue Behavior
template <typename NodeType>
NodeType * TQueue<NodeType>::PickHead()

template <typename NodeType>
void TQueue<NodeType>::AppendTail(NodeType * _newNode)

template <typename NodeType>
BOOL TQueue<NodeType>::IsEmpty()

// Sequence Visit
template <typename NodeType>
NodeType * TQueue<NodeType>::GetNextNode(HANDLE & hcur)

template <typename NodeType>
NodeType * TQueue<NodeType>::PickCurrentNode(HANDLE & hcur)
    assert(hcur != NULL);
    assert(_queueLen > 0);

    QNode<NodeType> * tmpQNode = (QNode<NodeType>*)hcur;
    NodeType * tmpNode = NULL;

    if (tmpQNode->prevQNode == NULL) // is the head
        _queueHead = tmpQNode->nextQNode;
    else
        tmpQNode->prevQNode->nextQNode = tmpQNode->nextQNode;

    if (tmpQNode->nextQNode == NULL) // is the tail
        _queueTail = tmpQNode->prevQNode;
    else
        tmpQNode->nextQNode->prevQNode = tmpQNode->prevQNode;

    tmpNode = tmpQNode->node;
    delete tmpQNode;
    hcur = NULL;
    return tmpNode;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: