我一直在处理Doubly Linked List代码,而且每次尝试编译时我都无法找到导致错误的原因。抛出的错误是
main.obj:错误LNK2019:未解析的外部符号“public:__ thishisall 在函数> _main中引用的DoublyList :: DoublyList(void)“(?? 0?$ DoublyList @ H @@ QAE @ XZ) 1> Doubly List.exe:致命错误LNK1120:1未解析的外部
DoublyList.h - > http://pastebin.com/5wbeKksv
DoublyListNode.h和main.cpp - > http://pastebin.com/vVdGpgaW
答案 0 :(得分:2)
您声明但未定义DoublyList
默认构造函数。它的析构函数也是如此。
答案 1 :(得分:0)
您已为DoublyList声明了构造函数但未对其进行定义。在你的DoublyList()之后添加一个{}并查看它是否有效取消了;太
答案 2 :(得分:0)
您已经定义了复制构造函数,但忘记定义默认构造函数:
template< class T >
DoublyList< T > :: DoublyList() : head(NULL), size( 0 )
{
// empty body
} // end DoublyList
答案 3 :(得分:0)
与您的问题无关,我知道这不是代码审查部分,但这是我的一些想法。
在插入功能
中DoublyListNode < T > *newPtr = new DoublyListNode< T >(tempData);
newPtr->nextPtr = newPtr->prePtr = NULL;
if(newPtr == NULL)
{
cout << "Insert cannot allocate memory\n";
} //end if
应该是
DoublyListNode < T > *newPtr = new DoublyListNode< T >(tempData);
if(newPtr == NULL)
{
cout << "Insert cannot allocate memory\n";
}else{
newPtr->nextPtr = newPtr->prePtr = NULL;
// rest of code
此外,在您的查找功能
DoublyListNode< T > *currentPtr = head;
for(int i = 1; i < index; i++)
{
currentPtr = currentPtr->nextPtr;
} // end for
应该是
DoublyListNode< T > *currentPtr = head;
for(int i = 1; currentPtr && (i < index); i++)
{
currentPtr = currentPtr->nextPtr;
} // end for
此外,由于您使用的是C ++,请考虑使您的索引从0开始(查看您的代码,它们是基于1的)