我对如何使用模板功能感到困惑。我也不理解struct内部的Nodes的含义。
这是空的声明:
#ifndef DoublyLinkedList_hpp
#define DoublyLinkedList_hpp
#include <stdio.h>
#include <stdexcept>
template <typename Type>
class DoublyLinkedList {
public:
DoublyLinkedList();
unsigned int size();
bool isEmpty();
void insert(Type& e);
unsigned int find(Type& e);
void erase(unsigned int index);
void show();
void sort();
Type& getHead();
Type& getTail();
Type& operator[] (const unsigned int index);
private:
struct Node {
Type data;
Node* prev;
Node* next;
};
unsigned int n;
Node* header;
Node* trailer;
};
对于空实现,我有以下代码:
template< typename Type>
DoublyLinkedList <Type>::DoublyLinkedList()
{
}
template< typename Type>
unsigned int DoublyLinkedList<Type>::size()
{
}
template< typename Type>
bool DoublyLinkedList<Type>::isEmpty()
{
}
template< typename Type>
void DoublyLinkedList<Type>::insert(Type& e)
{
}
template< typename Type>
unsigned int DoublyLinkedList<Type>::find(Type& e)
{
}
template< typename Type>
void DoublyLinkedList<Type>::erase(unsigned int index)
{
}
template< typename Type>
void DoublyLinkedList<Type>::show()
{
}
template< typename Type>
void DoublyLinkedList<Type>::sort()
{
}
template< typename Type>
Type& DoublyLinkedList<Type>::getHead()
{
return header;
}
template< typename Type>
Type& DoublyLinkedList<Type>::getTail()
{
}
template< typename Type>
Type& DoublyLinkedList<Type>::operator[] (const unsigned int index)
{
}
#endif /* DoublyLinkedList_hpp */
现在,我已经填充了构造函数和其他函数的代码,但出现错误 1> main.obj:错误LNK2019:未解析的外部符号“ public:__thiscall DoublyLinkedList :: DoublyLinkedList(void)”(?? 0?$ DoublyLinkedList @ VMovie @@@@ QAE @ XZ)在函数“ void __cdecl ____ C_A_T_C_H ____ T_E_S( )”(?____ C_A_T_C_H ____ T_E_S_T ____ 104 @@ YAXXZ)
请有人帮忙填写构造函数列表,并帮助我理解Struct中的Nodes。
非常感谢!