c++中链表代码中未解决的外部错误

unresolved external error in linked-list code in c++

本文关键字:外部 错误 代码 链表 c++ 未解决      更新时间:2023-10-16

我的实现代码有问题,你能帮我正确运行这段代码吗?

代码必须插入一个新客户并显示所有客户。。

我收到以下错误:

1> Source.obj:错误LNK2019:未解析的外部符号"类等待列表__cdecl mylist(void)"(?mylist@@YA?AVwaitinglist@@XZ)在函数_main 1>c:\users\mmm\documents\visual studio中引用2012\Projects\ConsoleApplication141\Debug\ConsoleApplication141.exe:致命错误LNK1120:1个未解析的外部

这是Header.h:

#include<iostream>
#include<string>
using namespace std;
class customer
{
public:
    string name;
    int gsize;
    int status;
    customer* next;
    customer();
    customer(string,int,int);
};
class waitinglist
{
public:
    int tables; //number of occupied tables
    int chairnum;
    int totalcustomers;
    customer*head,*tail;
    waitinglist();
    waitinglist(int);
    void newcustomer(string,int,int);
    void displayall();
};

这是Source.cppmain:

#include"Header.h"
customer::customer()
{
    name="";
    gsize=status=0;
    next=NULL;
}
customer::customer(string name1,int gsize1,int status1)
{
    name=name1;
    gsize=gsize1;
    status=status1;
    next=NULL;
}
waitinglist::waitinglist()
{
    chairnum=totalcustomers=tables=0;
    head=tail=NULL;
}
waitinglist::waitinglist(int val)
{
    chairnum=val;
    totalcustomers=0;
    tables=0;
    head=tail=NULL;
}
void waitinglist::newcustomer(string name1,int gsize1 ,int status1)
{
    customer*tmp= new customer;
    if (head==NULL)            // linkedlist is empty
    {
        head = tail = tmp;
        totalcustomers++;
    }
    else
    {
        tmp->next = head;
        head = tmp;
        totalcustomers++;
    }
}
void waitinglist::displayall()
{
    customer *tmp;
    tmp = head;
    while(tmp != NULL)
    {
        cout<<tmp->name <<" "<<tmp->gsize<<"-->"; 
        tmp = tmp->next;
    }
    cout << endl;
}
int main()
{
    int choice;
    string namevar="";
    int gsizevar=0;
    int statusvar=0;
    waitinglist mylist();
    do
    {
        cout<<"Note: 1 in status means{the customer not here and 2 means the customer is here.}n";
        cout<<"Select your option.nn";
        cout<<"(1) Add a new Customer.n";
        cout<<"(2) List all Names.n";
        cout<<"(3) Quit.nn";
        cout<<"Enter your choice: -->";
        cin>>choice;
        if (1 <= choice && choice <= 2)
        {   
            switch (choice)
            {
            case 1:
                mylist().newcustomer(namevar,gsizevar,statusvar);
                break;
            case 2:
                mylist().displayall();
                break;
            default:
                cout << "Invalid choice.  Enter again.nn";
                break;
            }
        }   
    }
    while (choice != 3);
    return 0;
}
waitinglist mylist();

被解释为函数声明(由于最麻烦的解析),您没有提供它的定义,后来,您试图调用它。您得到了链接器错误,因为找不到定义。

删除main:中每次出现mylist后的括号

waitinglist mylist;                             // default-construct mylist
...
mylist.newcustomer(namevar,gsizevar,statusvar); // use mylist object
...
mylist.displayall();