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

C++ Discussion :

[Template] erreur spécialisation explicite


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut [Template] erreur spécialisation explicite
    bonjour,

    j'ai les erreurs suivantes quand je veux compiler un projet qui est censé marcher.

    error C2908: spécialisation explicite*; 'CCouple<T>' a déjà été instancié
    error C2766: spécialisation explicite*; 'CCouple<float>' a déjà été défini
    pourtant il y a bien un #ifndef... (je sais pas si ca a un rapport..)
    je comprend pas pourquoi il me fait cette erreur

    la premiere est sur la ligne du template

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    template <> class CCouple<float>{
    ...
    };
    la seconde sur la ligne du ;

    une idée?

  2. #2
    Membre éclairé
    Avatar de Florian Goo
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    680
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 680
    Points : 858
    Points
    858
    Par défaut
    Bonjour,

    Fais nous voir le code entier de ton fichier. A priori, le peu que tu nous montres est correct.
    Cours : Initiation à CMake
    Projet : Scalpel, bibliothèque d'analyse de code source C++ (développement en cours)
    Ce message a été tapé avec un clavier en disposition bépo.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    me revoilà,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #ifndef _COUPLE_H
    #define _COUPLE_H
     
    #include <stdio.h>
    #include <chaine.h>
    #include <fileio.h>
     
    template <class T> class CCouple{...};
    template <> class CCouple<int>{...};
    template <> class CCouple<float>{...};
     
    #endif
    j'ai pas mis le corps des class car il y a plus de 600 lignes mais je pense que là ca suffit?? j'ai un peu de mal avec les templates... je suis entrain de regarder des cours sur le site...

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Bonjour,
    Ce code est correct et compile (hormis les ..., bien sûr). Donc, ton erreur doit être ailleurs.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    Je ne voyais pas d'erreur non plus

    mais vu les erreurs (a dejà été instancié / a déjà été défini) je pense que ca vient du fait qu'il y a plusieurs include de ce fichier couple.h non?

    sinon je vois vraiment pas, et les erreurs ne sont pas sur des lignes comprises dans les ... mais bien au debut et à la fin ( ; ) du dernier template

  6. #6
    Membre éclairé
    Avatar de Florian Goo
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    680
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 680
    Points : 858
    Points
    858
    Par défaut
    mais vu les erreurs (a dejà été instancié / a déjà été défini) je pense que ca vient du fait qu'il y a plusieurs include de ce fichier couple.h non?
    Non, de ce côté ça semble OK vu que tu as bien mis des include guards.

    Si tu commentes la définition de CCouple<float>, ça compile bien ?
    Cours : Initiation à CMake
    Projet : Scalpel, bibliothèque d'analyse de code source C++ (développement en cours)
    Ce message a été tapé avec un clavier en disposition bépo.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    oui il y a bien les ifndef

    si je commente l'interieur, j'ai toujours les memes erreurs. Si je commente le template, j'ai des erreurs de cast impossible sur des lignes tq :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    a01 = ((CCouple<float>)(*ptriple2couple[0]-*ptriple2couple[1]))/b01;
    (mais plus les deux erreurs précédentes forcement)

  8. #8
    Membre éclairé
    Avatar de Florian Goo
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    680
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 680
    Points : 858
    Points
    858
    Par défaut
    Le cast est plutôt sale !

    Il faut que tu nous montres encore un peu plus de ton code.

    Pourquoi ces spécialisations, au juste ?
    Cours : Initiation à CMake
    Projet : Scalpel, bibliothèque d'analyse de code source C++ (développement en cours)
    Ce message a été tapé avec un clavier en disposition bépo.

  9. #9
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    As-tu regardé ici et ici.
    Plus particulièrement, tu n'aurais pas une spécialisation avant:
    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
    #ifndef _COUPLE_H
    #define _COUPLE_H
     
    #include <stdio.h>
    #include <chaine.h>
    #include <fileio.h>
     
    template <class T> class CCouple{...};
     
    void UneFonction()
    {
    CCouple<float> LeCouple;
    }
     
    template <> class CCouple<int>{...};
    template <> class CCouple<float>{...};
     
    #endif
    Surtout, je rajouterais, si ton cast est fait avant les spécialisations!

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    coucou,

    non tout était bien fait... j'ai installé visual 2005 (car à la base c'est un projet visual 2005 et je l'ouvrais avec 2008) et quand j'ai compilé ca allait .

    En fait je pense que ca doit venir de leur convertisseur de projet (quand j'ouvre une solution 2005 avec le 2008 il essaie de me convertir... j'ai voulu rouvrir une copie du projet avant conversion avec le 2008 et là plus moyen, il voulait jamais le convertir donc j'ai installé 2005...)

    voilà

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

Discussions similaires

  1. [Templates] Erreur avec les templates
    Par tmanta7 dans le forum C++
    Réponses: 4
    Dernier message: 07/10/2008, 14h09
  2. Réponses: 4
    Dernier message: 19/04/2007, 07h32
  3. Classe template - erreur compilation
    Par Rodrigue dans le forum Langage
    Réponses: 5
    Dernier message: 06/07/2006, 17h26
  4. [wsdl] Erreur non explicite
    Par TobyKaos dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 09/12/2005, 09h54
  5. [FORMS][6i] Erreur non explicitée
    Par badara1 dans le forum Forms
    Réponses: 15
    Dernier message: 13/05/2005, 10h56

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