problème insoluble ... (en tout cas pour moi ;))

problème insoluble ... (en tout cas pour moi ;)) - Programmation

Marsh Posté le 08-06-2001 à 19:27:12    

Voila ce que je voudrais faire (et qui me semble impossible, m'enfin j'espere bien me tromper) :
déjà la classe CElement, qui contient entre autre un pointeur vers un autre CElement (classique ;))
on a également une classe CList, qui contient plusieurs pointeurs vers des CElement, ainsi que des fonctions qui prennent en param, ou bien retournent, un CElement.
Et ensuite il faudrait qu'on puisse créer une class par ex CTrucList, qui fasse exactement la même chose que CList, mais avec tous les CElement remplacés par des CTruc, classe dérvivée de CElement ...
Alors voila au départ ce problème me semblait tt con avec des templates, mais après plusieurs heures d'essais, je commence à craindre que cela ne soit impossible ...  
Alors j'espere que je suis un gros mauvais et qu'effectivement c'est simple à faire, mais dites moi comment ! ;)
Au fait, si j'ai pas été assez clair (ce qui est à craindre vu les problèmes que j'ai à résoudre ce problème), demandez !

Reply

Marsh Posté le 08-06-2001 à 19:27:12   

Reply

Marsh Posté le 08-06-2001 à 20:39:34    

tout d'abord pour info, le préfixe Cmachin est utilisé assez largement par la MFC, donc gaffe.
Puis, si tu fais cette liste autrement pour que t'entrainer à programmer, jette un oeil aux listes de la STL (#include <list> )
Ca rend moins naïf.
Ensuite, si tu veux vraiment faire ta liste toi même, y'a pas besoin de faire de type dérivé. Si tu veux faire une liste chainée, il faut créer des noeuds qui se chargent de pointer vers des éléments d'un certain type.
 
template <typename T>
Node
{
 T elem;
 Node<T> * next, * prev;
public:
 Node(const T & telem, Node<T> * ptrev, Node<T> * tnext):elem(telem), prev(tprev), next(tnext){}
 T& operator * (){return elem;}
 const T & operator * () const {return elem;}
};
 
template <typename T>
class List
{
 Node<T> * first, * last;
public:
 ...
};
 
enfin j'ai pas envie d'en écrire plus, mais ça ressemble déjà à  une liste chainée.
 
Si tu veux plus d'info, ou si tu veux limiter l'usage de ces listes à des types dérivés d'un certain type T, n'hésite pas à poster.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed