You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++类实现链表调用display出现undefined reference链接错误如何解决

错误原因

这是C++编译链接阶段典型的未定义引用错误,触发原因如下:

  • 你在linkedlist类的声明中,声明了带参构造函数linkedlist(int A[], int n)、析构函数~linkedlist()两个成员函数,但只做了声明没有写对应的实现代码,链接器找不到这两个函数的实际执行逻辑就会抛出该错误。
  • 另外还存在一处语法问题:你没有在linkedlist类的public权限块中声明display()成员函数,直接在类外实现该函数也是不符合C++语法要求的,当前报错是链接阶段先触发了函数未定义的问题,修复后这个问题也会暴露。
修复方案

按照以下几点修改代码即可:

  1. 在linkedlist类的public块中补充display()的函数声明
  2. 补全带参构造函数的实现,逻辑为遍历数组元素,逐个创建节点拼接成链表
  3. 补全析构函数的实现,遍历链表逐个释放节点内存,避免内存泄漏

修正后的完整代码如下:

#include<iostream>
using namespace std;

class node
{
    public:
    int data;
    node *next;
}*head;

class linkedlist
{
private:
    node *first;
public:
    linkedlist(){first=NULL;}
    linkedlist(int A[], int n);
    ~linkedlist();
    void display(); // 补充display函数声明
};

// 补全带参构造函数实现
linkedlist::linkedlist(int A[], int n) {
    first = new node;
    first->data = A[0];
    first->next = NULL;
    node* last = first;
    for(int i = 1; i < n; i++) {
        node* t = new node;
        t->data = A[i];
        t->next = NULL;
        last->next = t;
        last = t;
    }
}

// 补全析构函数实现
linkedlist::~linkedlist() {
    node* p = first;
    while(first) {
        first = first->next;
        delete p;
        p = first;
    }
}

void linkedlist :: display(){
    node *p = first;
    while(p!=0){
        cout<<p->data<<" ";
        p=p->next;
    }
}

int main(){
    int A[]={2, 3, 4, 5, 6};
    linkedlist l(A,5);
    l.display();
}

内容的提问来源于stack exchange,提问作者NoobCoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 05:54:02