所以,这是我的“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] - &gt; 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。再次感谢!
Neah ..实际上它不起作用..
答案 0 :(得分:0)
您已创建指向链接列表的指针,并且从未将其指向现有元素。使用new来分配动态内存或使用对象而不是指针。
像这样:
Linked_list<Linked_list<string> > *l = new Linked_list<Linked_list<string> >();
或者像这样:
Linked_list<Linked_list<string> > l;
您使用operator[]
的事实可能意味着您打算使用数组,所以可能您必须使用第一个版本。
答案 1 :(得分: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> >;