ayaka_s_honey 2023-04-06 16:57 采纳率: 100%
浏览 11
已结题

单链表模板类构造函数的非法使用问题

我创建了一个结构体以及一个模板类,用于实现单链表的功能:

struct Node {
    T data;
    struct Node<T> *next;
};
template<class T>

class LinkList {
    private:
        Node<T> *head;
    public:
        LinkList() {
            head = new Node<T>;
            head->next = NULL;
        }
        LinkList(T a[], int n);
        ~LinkList();
        void insert(int i, T x);
        T Delete(int i);
        Node<T> *get(int i);
        int locate(T x);
        int length();
        void print();
};

并且在主函数中创建了一个数组,准备用构造函数去给单链表赋值:

int main() {

    int arr[20] = {1, 2, 3, 4};
    LinkList<int> list(arr, 20);
    list.LinkList();
    list.LinkList(arr, 20);
    list.insert(5, 5);
    list.get(4);
    list.locate(2);
    list.print();
}

此时编译器却告诉,主函数中出现了对构造函数的非法调用错误:

img


请问为什么会发生这样的编译错误,又该如何解决呢?

  • 写回答

2条回答 默认 最新

  • Dummer25 2023-04-06 17:13
    关注

    你这基础不过关呀,在主函数中,调用构造函数的语句应该是 LinkList list(arr, 4);,而不是 LinkList list(arr, 20);。因为数组 arr 中只有 4 个元素,所以创建链表时应该给出正确的数组长度,否则可能会访问到未初始化的内存空间。

    此外,在主函数中还多次调用了 LinkList 类的构造函数,这是不必要的,因为在类对象被创建时默认会调用构造函数。所以可以将 list.LinkList(); 和 list.LinkList(arr, 20); 这两行代码删除。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月14日
  • 已采纳回答 4月6日
  • 创建了问题 4月6日

悬赏问题

  • ¥15 【急】在线问答CNC雕刻机的电子电路与编程
  • ¥60 在mc68335芯片上移植ucos ii 的成功工程文件
  • ¥15 笔记本外接显示器正常,但是笔记本屏幕黑屏
  • ¥15 Python pandas
  • ¥15 蓝牙硬件,可以用哪几种方法控制手机点击和滑动
  • ¥15 生物医学数据分析。基础课程就v经常唱课程舅成牛逼
  • ¥15 云环境云开发云函数对接微信商户中的分账功能
  • ¥15 空间转录组CRAD遇到问题
  • ¥20 materialstudio计算氢键脚本问题
  • ¥15 有没有代做有偿主要做数据可视化部分即可(2023全国高考更省一本线理科类)