LNK2019未解析外部符号

LNK2019 unresolved external symbol?

本文关键字:外部 符号 LNK2019      更新时间:2023-10-16

我有一个疑问,所以我在这里寻求一些帮助。提前谢谢。

我定义了一个类来实现文件系统的基本功能,如下所示:

//Header.h
#include <iostream>
using namespace std;
typedef int BOOL;
#define TRUE 1
#define FALSE 0
typedef struct NODE
{
    struct NODE *prev;
    int data;
    struct NODE *next;
}NODE,*PNODE,**PPNODE;
class doubly_circular
{
   private:
           PNODE head;
           PNODE tail;
public:
       doubly_circular();
       ~doubly_circular();
       BOOL insertfirst(int);
       BOOL display();
       int count();
};

我在这里使用了双循环链表。

以上函数的定义

//helper.cpp
doubly_circular::doubly_circular()
{
head=NULL;
tail=NULL;
}
BOOL doubly_circular::display()
{
PNODE temp=head;
if((head==NULL)&&(tail==NULL))
{
    return FALSE;
}
do
{
    cout<<temp->data<<endl;;
    temp=temp->next;
}while(tail->next!=temp);
return TRUE;
}
BOOL doubly_circular::insertfirst(int ino)
{
PNODE newN=NULL;
newN->prev=NULL;
newN->data=ino;
newN->next=NULL;
if((head==NULL)&&(tail==NULL))
{
    head=newN;
    tail=newN;
    tail->next=newN;
    head->prev=tail;
    return TRUE;
}
else
{
    newN->next=head;
    head->prev=newN;
    head=newN;
    head->prev=tail;
    tail->next=newN;
    return TRUE;
}
}

和main:

//main.cpp
int main()
{
doubly_circular obj1,obj2;
obj1.insertfirst(1);
obj1.insertfirst(101);
obj1.insertfirst(151);
obj1.display();
return 0;
}
doubly_circular::~doubly_circular()
{ 
    free(head);
    free(tail);
}   

它仍然给我这个错误

Error   1   error LNK2019: unresolved external symbol "public: __thiscall doubly_circular::~doubly_circular(void)" (??1doubly_circular@@QAE@XZ) referenced in function _main    I:doublycircularLLdoublycircularLLmain.obj   doublycircularLL

虽然我分开了所有的功能仍然链接器给我错误,如果有人注意到我做错了什么,请让我知道。另外,如果有人需要更多的信息,请告诉我。非常感谢

首先-声明析构函数

doubly_circular::~doubly_circular()
{ //destruction code here }

然后-修复这个:

PNODE newN=NULL; // this is incorrect, as you will not be able to assign data to a node
PNODE newN=new NODE; // construct new node
newN->prev=NULL;
newN->data=ino;
newN->next=NULL;

最后-使用std::list作为容器,而不是发明新的容器。如果你需要循环结构-使用Boost::循环缓冲