IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage C++ Discussion :

Probleme classe interne template


Sujet :

Langage C++

  1. #1
    Membre éprouvé
    Avatar de SOAD08
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 101
    Par défaut Probleme classe interne template
    Bonsoir tout le monde,

    Je suis entrain de développer une classe vecteur avecdes fonctionnalitées ressemblantes à celles de la STL, mais en beaucoup beaucoup plus lite, mais j'ai un probleme lié au classes internes de classe template :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    template <class T>
    class vecteur {
       class iterateur;
    //Methodes et champ de classes
    };
     
    template <class T>
    class vecteur<T>::iterateur {
    //Methodes et champs
    };
    Jusque là, tout va bien, mais c'est au niveau des fonctions de la classe vecteur retournant un iterateur au debut et a la fin des données que ça bloque

    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
    template <typename T>
    vecteur<T>::iterateur vecteur<T>::debut(void) const {
    
    	/*	Methode de la classe vecteur<T>
    		Retourne un iterateur pointant
    		sur le premier element de la vecteur<T> */
    }
    
    template <typename T>
    vecteur<T>::iterateur vecteur<T>::fin(void) const {
    
    	/*	Methode de la classe vecteur<T>
    		Retourne un iterateur pointant
    		sur le dernier élément de la vecteur<T> */
    }
    Voici ce que j'obtient, au deux lignes en rouge :

    iterateur.h:52: error: expected constructor, destructor, or type conversion before "vecteur"
    iterateur.h:52: error: expected `;' before "vecteur"
    iterateur.h:63: error: expected constructor, destructor, or type conversion before "vecteur"
    iterateur.h:63: error: expected `;' before "vecteur"
    Quelqu'un a t'il la solution a ce problème ?

    Merci d'avance.
    www.cppreference.com ==> A lire pour vos problèmes touchant à la STL
    www.php.net ==> A lire avant de demander le fonctionnement d'une fonction PHP

    Alliance developpez Muzgo

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Par défaut
    Tu dois définir ton itérateur à l'intérieur de ta classe vecteur.
    En dehors de ça, à quoi bon développer ce qui existe déja?

  3. #3
    Membre éprouvé
    Avatar de SOAD08
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 101
    Par défaut
    Ma classe iterateur est dans ma classe vecteur regarde bien mon code.

    L'utilité de faire ça ?

    -Posseder des conteneurs que je connais parfaitements puisque je les developpe moi même
    -Mieux comprendre le fonctionnement de la STL
    -Je compte faire quelques projets sur des machines où les classes de la STL ne sont pas forcement disponibles.
    www.cppreference.com ==> A lire pour vos problèmes touchant à la STL
    www.php.net ==> A lire avant de demander le fonctionnement d'une fonction PHP

    Alliance developpez Muzgo

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Par défaut
    Ta syntaxe n'a pas de sens.
    Comme te l'a dit Zais, ta classe 'iterator' doit être définie dans ta classe vector.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    template<class T,class A> class vector
    {
      class iterator
      {
        ...
      };
      ...
    };
    L'autre possibilité que personnellement je préfère:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    template<class T> class vector_iterator
    {
      ...
    };
     
    template<class T,class A> class vector
    {
      public:
        typedef vector_iterator<T> iterator;
        typedef vector_iterator<const T> const_iterator;
      ...
    };

  5. #5
    Membre éprouvé
    Avatar de SOAD08
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 101
    Par défaut
    Mon probleme est résolu, j'ai mis la defininition de ma classe iterateur dans celle de la classe vecteur et c'est bon, merci
    www.cppreference.com ==> A lire pour vos problèmes touchant à la STL
    www.php.net ==> A lire avant de demander le fonctionnement d'une fonction PHP

    Alliance developpez Muzgo

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Par défaut
    Pour clarifier, je t'ai dit de la définir dans ta classe vector. Toi tu l'avais juste déclarée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 08/07/2008, 15h06
  2. Probleme avec classes internes
    Par pseudobidon57 dans le forum Langage
    Réponses: 5
    Dernier message: 03/07/2007, 11h49
  3. Class interne dans une classe template
    Par MatRem dans le forum Langage
    Réponses: 26
    Dernier message: 15/06/2006, 10h45
  4. [Débutant][Conception] Erreur avec une classe interne
    Par Devil Redneck dans le forum Général Java
    Réponses: 5
    Dernier message: 11/06/2004, 15h45
  5. [Thread] Erreur dans une classe interne
    Par totof2308 dans le forum Général Java
    Réponses: 5
    Dernier message: 03/06/2004, 08h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo