C ++中链表的链表

时间:2014-03-23 23:45:34

标签: c++ linked-list

我使用列表列表遇到了麻烦。我使用单链表,链表由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)。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

正如评论中已经说过的那样,您应该发布List类模板的代码。

据说我的猜测如下:

在标记的行l2.l1.add("name");中,您尝试访问类型为l1的{​​{1}}成员l2。 看到包装的类List<Second>有一个成员Second我假设你真的想要访问这个成员。 这意味着您必须首先导航到要访问的数据元素,然后才能对此数据元素进行操作。

如果没有提供l1的代码,我们就无法说明如何访问数据元素。