我使用列表列表遇到了麻烦。我使用单链表,链表由3个类(Node,ListIterator和List)组成,这些是模板类。 链接列表针对每种类型进行测试。类列表和其他类使用运算符<<避免打印功能。
我写了一些伪代码来表明我的问题,??表明问题区域:
class First
{ private:
string name;
public:
Tentamen (string n) : naam(n) {}
friend ostream& operator<< (ostream& out, const First& f)
{ return out << "First: " << f.name << endl; }
};
class Second
{ private:
string name;
List<First> l1;
public:
Second(string n) : naam(n){}
friend ostream& operator<< (ostream& out, const Second& s)
{
out << "Second: " << s.name << endl;
?? out << s.l1;
return out;
}
};
int main()
{ //test lijst template
//example use of List<T>
List<string> list2;
list2.add( "strand" );
list2.add( "zon" );
cout << list2; //print
List<Second> l2;
l2.add(Student("Jip");
?? l2.l1.add("name");
return 0;
}
我可以为每个类别,每个班级制作列表。问题是l2类型的List,我想在l2中访问类型List的l1。我无法访问l1,我已经尝试了很多朋友类&#39;声明和迭代器。
对于打印,我输出错误&lt;&lt;第二类中的s.l2,运算符&lt;&lt; &#39;错误:运营商不匹配&lt;&lt; in out&lt;&lt; s.l2 :: L1&#39;
我希望它足够清楚,如果不是我将在早上编辑(CET)。谢谢你的帮助。
答案 0 :(得分:0)
正如评论中已经说过的那样,您应该发布List
类模板的代码。
据说我的猜测如下:
在标记的行l2.l1.add("name");
中,您尝试访问类型为l1
的{{1}}成员l2
。
看到包装的类List<Second>
有一个成员Second
我假设你真的想要访问这个成员。
这意味着您必须首先导航到要访问的数据元素,然后才能对此数据元素进行操作。
如果没有提供l1
的代码,我们就无法说明如何访问数据元素。