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

Visual C++ Discussion :

Pb Template lors d'un portage VisualC++ => G++ 3.3.2


Sujet :

Visual C++

  1. #1
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 10
    Par défaut Pb Template lors d'un portage VisualC++ => G++ 3.3.2
    Je suis en train de porter une librairie de windows vers linux et je suis tombé sur un probleme de template.
    Mon niveau en template s'arrete a la template dite "de base", j'en appelle à la chamante communauté de developpez.com.
    Le problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    template<class KEY_TYPE>
    class UneClasse
    {
    protected:
    	typedef KEY_TYPE BASE_KEY;
    };
     
    template<class BASE_CLASS>
    class UneAutreClasse : public BASE_CLASS
    {
    public:
    	boolean uneFonction(BASE_CLASS::BASE_KEY key) const
    		{...}
    };
    VisualC++ ->ok
    gcc 3.3.2 -> syntax errror après BASE_CLASS::BASE_KEY key

    c'est un peu brut comme probleme mais je ne sais pas trop comment ca marche dans ces cas la.

    merci a tous de votre aide

  2. #2
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Bonjour, et bienvenu à toi sur developpez.com

    Comment il fait le lien entre UneClasse et BASE_CLASS pour trouver BASE_KEY ? Cela compile et fonctionne sous Visual ?

    ps: penser à la balise CODE, le bouton #, Merci

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    1. Le type "boolean" existe bien ? Il n'est pas standard...
    2. Essaie en rajoutant le mot-clé typename devant le type...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 10
    Par défaut
    En cherchant bien je me suis appercu que la classe uneAutreClasse n'était référencée nul part dans le projet donc pour le moment je me suis contenté d'un ifdef WIN32 autour avec le commentaire qui va bien et ca n'a pas bronché... en attendant mieux.

    Néanmons je me demande comment fait visual (6.0) pour compiler ca. (Super! un detecteur de code mort)

    merci de votre aide

  5. #5
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Visual C++ 6 ne vérifie pas totalement certaine partie à la compilation si la class n'est pas utilisé. Donc la classe a t'elle déjà été utilisé ? Parfois cela arrive aussi qu'il se mélange les pinceaux dans ce qu'il a déjà compilé... et donc on peut penser que c'est bien compilé, et en fait il faut tout recompiler.

  6. #6
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 10
    Par défaut
    Medinoc-> pas de pb de ce coté la (en fait, c'est un SFbool dans le code)

    merci cependant de ton intervention.

  7. #7
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 10
    Par défaut
    merci Ti-R pour les informations complementaires sur le mystère (pour moi) de cette compilation

  8. #8
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Citation Envoyé par Ti-R
    Visual C++ 6 ne vérifie pas totalement certaine partie à la compilation si la class n'est pas utilisé.
    Je ne pense pas que cela sorte du cadre des templates. Mais ici, c'est le cas.


    Quant au fait que ça compile du coté de Visual 6, il y a des chances que ce soit une question de typename (Visual est connu pour être assez laxiste là-dessus...)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Citation Envoyé par Médinoc
    Quant au fait que ça compile du coté de Visual 6, il y a des chances que ce soit une question de typename (Visual est connu pour être assez laxiste là-dessus...)
    Il manque effectivement le typename. => FAQ!
    Mais peut-on parler de laxisme pour un compilo qui a quelques mois de plus que la norme ?
    Upgrade! Il est vieux de plus de 8 ans VC6.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  10. #10
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 10
    Par défaut
    Citation Envoyé par Luc Hermitte
    Upgrade! Il est vieux de plus de 8 ans VC6.
    Je developpe sous .net2003. Seule la lib à été develloppé sous VC6 et je n'ai aucune envie de la recompiler sous .net 2003.
    Seul m'importe le fait d'avoir une lib linux car le logiciel que je developpe dois assurer la portabilité

    pour ce qui est du typename il aurait falllu le mettre ou?

  11. #11
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    On a dit voir la FAQ... Comme je suis bon: http://c.developpez.com/faq/cpp/?pag...LATES_typename

Discussions similaires

  1. Réponses: 6
    Dernier message: 27/01/2012, 15h54
  2. Réponses: 4
    Dernier message: 13/05/2010, 01h26
  3. Réponses: 1
    Dernier message: 07/03/2010, 10h27
  4. Problème d'accents lors du portage d'une appli
    Par manudwarf dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 26/05/2009, 09h42
  5. Réponses: 1
    Dernier message: 04/09/2008, 19h21

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