Bonjours, je rencontre pas mal de probleme pour la creation d'une liste generique.
En effet, je n'arrive pas a declarer une des classes en tant qu'amie.
Voila mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
template <typename T>
class maillon{
    friend class List<T>;
    private:
        T value;
        maillon<T> *next;
    public:
        maillon():next(NULL){}
        maillon(const maillon<T> &m):next(NULL), value(m.value){}
        ~maillon();
        maillon<T> &operator=(const maillon<T> &m){
            next = m.next;
            value = m.value;
            return *this;
        }
};
template <typename T>
class List{
    friend class maillon<T>;
    private:
        maillon<T> *first;
        maillon<T> *last;
    public:
        List();
        List(const List &);
        ~List();
        List &operator=(const List<T> &);
        List<T>& operator+(const maillon<T> &);
        List<T>& operator+(const List<T> &);
        void my_free();
        void printList();
        void addTail(T);
};
A la compilation, les premieres erreurs (dont decoulent les autres je pense ^^) est :

In file included from main.cpp:1:
list.h:11: erreur: « «List» » n'est pas un modèle # en particulier celle la !
list.h: In instantiation of «maillon<int>»:
list.h:133: instantiated from «void List<T>::addTail(T) [with T = int]»
main.cpp:6: instantiated from here
list.h:9: erreur: template argument required for «struct List»

merci d'avance pour votre aide