typedef imbriqués (?) et templates
Bonjour,
Une drôle d'idée vient de nous arriver : nous templatisons, et les petits amateurs que nous sommes se retrouvent à devoir redéfinir des typedef histoire d'essayer de sauver des lignes illisibles. Dans l'ancienne version, les typedef qui posent problèmes ressemblaient à ceux-ci :
Code:
1 2 3 4 5 6 7
|
//classe ItSegment
template<class TNodeIterator> class ItSegment;
//typedef pour la classe TitNode :
typedef list<Node*>::iterator TitNode;
//typedef pour la classe TitSegment
typedef ItSegment<TitNode> TitSegment; |
Mais maintenant, la classe Node est elle-même un template, donc on essaye d'écrire des choses comme celle-là :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
//classe ItSegment
template<class TLine,template<class TLine> class TNodeIterator > class ItSegment;
//typedef pour la classe TitNode :
template <class TLine> class TitNode{};
//spécialisé pour la classe Line
template<> class TitNode<Line>
{
public:
typedef list<Node<Line>*>::iterator Type;
};
//typedef pour la classe TitSegment
template<class TLine> class TitSegment
{};
//spécialisé pour la classe Line
template<> class TitSegment<Line>
{
public:
typedef ItSegment<Line,list<Node<Line>*> >::iterator Type;
}; |
et ça ça nous pète au nez... avec des messages du genre :
Code:
erreur: type/value mismatch at argument 2 in template parameter list for template<class TLine, template<class TLine> classTNodeIterator> struct ItSegment
Toute suggestion sera la bienvenue ;-)
Merci tout plein !
Marc