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 用ns3仿真出5G核心网网元
  • ¥15 matlab答疑 关于海上风电的爬坡事件检测
  • ¥88 python部署量化回测异常问题
  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”