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 :

[ERR.COMPILATION] Typedef d'un template d'un template


Sujet :

Langage C++

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2003
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2003
    Messages : 66
    Par défaut [ERR.COMPILATION] Typedef d'un template d'un template
    Bonjour,
    J'ai un problème de compilation et je me demande s'il ne s'agirait pas du compilateur de microsoft (VC++ 6.0).

    Voici un bout de déclaration qui compile:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    boost::shared_ptr< std::vector<int> >  mon_objet;
    Je tente alors de remplacer cette déclaration par un typedef comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    template <typename T>
    typedef boost::shared_ptr< std::vector<T> > SPV;
    ...
    SPV<int> mon_objet;
    J'obtiens alors comme erreurs :error C2059: syntax error : '<'. Je trouve cette situation troublante.

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Les typedef template n'existent pas (encore) en C++.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Une (la seule ?) solution de rechange en attendant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    template <typename T>
    struct SPV
    {
        typedef boost::shared_ptr< std::vector<T> > Type;
    }
    ...
    SPV<int>::Type mon_objet;

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2003
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2003
    Messages : 66
    Par défaut
    Pas trop plaisant mais merci pour la réponse

  5. #5
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Une autre solution (mais qui a ses inconvénients) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    template<class T>
    struct SPV : boost::shared_ptr< std::vector<T> >
    {
      // Et on redéfini les constructeurs
    }
    Ou encore une alternative ( vous direz pas que c'est moi qui ai dit ça, hein... )

    #define SVP(type) boost::shared_ptr< std::vector<type> >
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2003
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2003
    Messages : 66
    Par défaut
    #define SVP(type) boost::shared_ptr< std::vector<type> >
    Je me demande si cette solution ne serait pas la meilleur magré le #define. Je crois que les désavantages (et dieu sait qu'ils sont nombreux) du #define dans cette situation deviennent négligeable si on est pour faire du brick à braque avec des méthodes plus safe mais beaucoup plus complex et inutile.
    Advenant une prise en charge dans un future proche, le #define serait beaucoup plus facile à retirer.

    Enfin de compte, peut-on se permettre d'utiliser des méthodes mal propre dans des cas exceptionnelles?

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/09/2014, 16h37
  2. Réponses: 5
    Dernier message: 10/09/2014, 09h36
  3. Réponses: 2
    Dernier message: 23/03/2011, 19h55
  4. [XSLT] Différence entre apply-templates et call-template
    Par Cpt.FLAM dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 04/04/2005, 18h47
  5. différence call-template et apply-templates
    Par mousstik dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 08/11/2004, 12h28

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