0

所以,这是我的“linked_list.h”标题的一部分:

template <typename T>
class Linked_list {
public:
  Linked_list();
  ~Linked_list();

  void add_first(const T& x);
  //...
};

我的实现的一部分:

template <typename T>
line 22: void Linked_list<T> :: add_first(const T& x)
{
  Node<T>* aux;
  aux = new Node<T>;
  aux->info = x;
  aux->prev = nil;
  aux->next = nil->next;
  nil->next->prev = aux;
  nil->next = aux;
}

我正在尝试创建一个字符串链接列表的链接列表,并将字符串添加到我的链接列表的一个链接列表中,如下所示:

Linked_list<Linked_list<string> > *l;
l[0]->add_first("list");
//also I've tried l[0].add_first("list"); but it didn't work either

谢谢你。

稍后编辑:当我尝试 l[0]->add_first("list") 这些是错误:

main.cc: In function ‘int main()’:
main.cc:22:22: error: no matching function for call      to‘Linked_list<Linked_list<std::basic_string<char> > >::add_first(const char [4])’
main.cc:22:22: note: candidate is:
In file included from main.cc:6:0:
linked_list.cc:28:6: note: void Linked_list<T>::add_first(const T&) [with T = Linked_list<std::basic_string<char> >]
linked_list.cc:28:6: note:   no known conversion for argument 1 from ‘const char [4]’ to ‘const Linked_list<std::basic_string<char> >&’

后来后来编辑:终于成功了,谢谢您的想法:我就是这样做的,现在可以了:

Linked_list<Linked_list<string> > l;
l[0].add_first("list");

它有效:D。再次感谢 !

嗯。。其实是不行的。。

4

2 回答 2

0

您正在尝试访问未初始化的指针。利用

Linked_list<Linked_list<string> > lol;
Linked_list<string> los;
los.add_first("list");
lol.add_first(los);

或者

Linked_list<Linked_list<string> > *p = new Linked_list<Linked_list<string> >; 
于 2013-05-11T20:16:28.140 回答
0

您创建了一个指向链表的指针,但从未将其指向现有元素。要么使用 new 分配动态内存,要么使用对象而不是指针。

像这样:

Linked_list<Linked_list<string> > *l = new Linked_list<Linked_list<string> >();

或者像这样:

Linked_list<Linked_list<string> > l;

您使用的事实operator[]可能意味着您打算使用数组,因此您可能必须使用第一个版本。

于 2013-05-11T20:15:53.407 回答