Template class List C++
Résolu
SuperSim987
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
SuperSim987 Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
SuperSim987 Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'essaie de créer une classe List en template fonctionnant avec des itérateurs afin de pratiquer mon C++.
J'obtiens l'erreur suivante lorsque je compile (ex.: List<int>) :
List.hpp:193: error: expected constructor, destructor, or type conversion before '&' token
Pour le code suivant :
template <typename Type>
List<Type>::Iterator& List<Type>::Iterator::operator++(void)
{
...
}
Pourtant, la classe Iterator est belle et bien définie dans le même fichier .hpp (puisqu'il s'agit d'un template) de la façon suivante :
template <typename Type>
class List
{
public:
class Iterator
{
public:
Iterator& operator++(void);
............
Ma question est : quelle est mon erreur ? Visiblement le compilateur n'arrive pas à reconnaître la classe Iterator pour l'objet que je souhaite retourner de l'opérateur++. Aucun namespace n'est utilisé.
Merci pour votre aide.
J'essaie de créer une classe List en template fonctionnant avec des itérateurs afin de pratiquer mon C++.
J'obtiens l'erreur suivante lorsque je compile (ex.: List<int>) :
List.hpp:193: error: expected constructor, destructor, or type conversion before '&' token
Pour le code suivant :
template <typename Type>
List<Type>::Iterator& List<Type>::Iterator::operator++(void)
{
...
}
Pourtant, la classe Iterator est belle et bien définie dans le même fichier .hpp (puisqu'il s'agit d'un template) de la façon suivante :
template <typename Type>
class List
{
public:
class Iterator
{
public:
Iterator& operator++(void);
............
Ma question est : quelle est mon erreur ? Visiblement le compilateur n'arrive pas à reconnaître la classe Iterator pour l'objet que je souhaite retourner de l'opérateur++. Aucun namespace n'est utilisé.
Merci pour votre aide.
A voir également:
- Template class List C++
- List disk - Guide
- Directory list & print - Télécharger - Divers Utilitaires
- Zn-401s code list - Forum Téléviseurs
- Comment faire fonctionner un remote nic - Forum Téléviseurs
- Mailing list gmail - Guide
3 réponses
Salut.
Selon le compilateur utilisé, on peut ou non déclarer une classe au sein d'une autre classe.
Je ne suis pas sur que déclarer une classe dans une autre classe soit "propre".
Sinon, l'erreur fait plutôt pensé au fait qu'il ne peut pas créer l'objet que tu demandes.
Selon le compilateur utilisé, on peut ou non déclarer une classe au sein d'une autre classe.
Je ne suis pas sur que déclarer une classe dans une autre classe soit "propre".
Sinon, l'erreur fait plutôt pensé au fait qu'il ne peut pas créer l'objet que tu demandes.
bonjour,
essayes de définir l'opérateur à l'intérieur de la classe
iterator& operator++(void){.....}
essayes de définir l'opérateur à l'intérieur de la classe
iterator& operator++(void){.....}
Bonjour et merci pour vos réponses,
Définir l'opérateur à l'intérieur de la classe corrige l'erreur, mais j'aimerais quand même pouvoir le définir dans une autre section du fichier (question de propreté).
L'erreur ne survient que lorsque le type retourné est un Iterator. En guise d'exemple, la fonction suivante compile sans anicroche :
template <typename Type>
Type& List<Type>::Iterator::operator*(void) const
{
...
}
Merci
Définir l'opérateur à l'intérieur de la classe corrige l'erreur, mais j'aimerais quand même pouvoir le définir dans une autre section du fichier (question de propreté).
L'erreur ne survient que lorsque le type retourné est un Iterator. En guise d'exemple, la fonction suivante compile sans anicroche :
template <typename Type>
Type& List<Type>::Iterator::operator*(void) const
{
...
}
Merci