Template class

Hi I have this template class but I get a lot of errors in it. 1st error points to the structListItem declaration:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
template <class LISTITEM> class listI;

template <class LISTITEM>
class listM
{
    public:
        listManager();
        ~listManager();
        LISTITEM *AddItem();
        listI<LISTITEM> *getI();
        friend class listI<LISTITEM>;
    protected:
        template <class LISTITEM>
        class structListItem
        {
            public:
                class structListItem *prevStruct;
                class structListItem *nextStruct;
                LISTITEM *currItem;
                structListItem();
                ~structListItem();
        };
        template <class LISTITEM>
        class iterListItem  // To define the list of iterators
        {
            public:
                class iterListItem *prevIter;
                class iterListItem *nextIter;
                class listI<LISTITEM> *currIter;
                iterListItem();
                ~iterListItem();
        };
        iterListItem<LISTITEM> *iterators;
        class structListItem<LISTITEM> *firstStructList;
        class structListItem<LISTITEM> *lastStructList;
};

template <class LISTITEM>
class listI
{
    public:
        listI(listM<LISTITEM> *listMn);
        LISTITEM *nextStructListItem();     // Function to return the next LISTITEM
        LISTITEM *prevStructListItem();     // Function to return the previous LISTITEM
        LISTITEM *currStructListItem();     // Function to return the current LISTITEM
        void pointToStart();            // Point the currListItem pointer so that nextStructListItem gives the firstStructList Item
        void pointToEnd();              // Point the currListItem pointer to the lastStructList item
    private:
        listM<LISTITEM> *myList;
        listM<LISTITEM>::structListItem<LISTITEM> *currStructList;
};

Sorry about not writing the question properly. Will keep in mind in future. I am using MinGW. The problem was got resolved when I removed the iterListItem and structListItem as templates and made them regular classes.
Hi
1
2
//listM<LISTITEM>::structListItem<LISTITEM> *currStructList;
class listM<LISTITEM>::structListItem *currStructList;

http://www.parashift.com/c++-faq-lite/templates.html#faq-35.18

Does it help?

Also you need remove the definition of structListItem as a template (or change the name of the template)
1
2
3
4
5
6
7
template<class T>
class A{
//  template<class T> //you've got your type because you are inside A<T>
  B{ 
    T obj; //no problem
  };
};
Last edited on
Topic archived. No new replies allowed.