这是我的代码:

template <typename T> struct Node {    T info;           Node<T>* next;  };   template<typename T> struct List {    Node<T>* n;    int curr; };  List<T> listCreate() {    List<T> lst;    lst.curr = 0;    cout << lst.n->info;    lst.n->info = 0;    lst.n->next = NULL;    return lst; } 

如果我删除了cout << lst.n->info; 它会导致细分错误。 我要实现的是仅创建一个List并具有下一个值:

首先:

  • curr = 0
  • n:
    • 信息= 0
    • 下一个= NULL

但是我找不到实现此目的的方法,我尝试在google上搜索并阅读有关指针和结构的信息,但我找不到问题。 这可能是一个简单的问题,但我找不到。

提前致谢。

===============>>#1 票数:2 已采纳

您忘记初始化lst.n 访问未初始化的内存或nullptr是未定义的行为。

您可以执行以下操作:

List<T> listCreate() {    List<T> lst;    lst.curr = 0;    // new code    lst.n = new Node<T>();    lst.n->next = nullptr;    // end    cout << lst.n->info;    lst.n->info = 0;    lst.n->next = nullptr;    return lst; } 

请考虑避免使用NULL 您应该在c++使用nullptr

  ask by roberto carlos translate from so

===============>>#2 票数:0

请记住,取消引用空指针或未初始化的指针是未定义的行为。 您正在尝试在代码中取消引用未初始化的指针lst.n->info

  ask by roberto carlos translate from so

本文未有回复,本站智能推荐: