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 基于单片机的靶位控制系统
  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错