Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Membre Expert Avatar de méphistopheles
    Inscrit en
    janvier 2005
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Âge : 26

    Informations forums :
    Inscription : janvier 2005
    Messages : 1 552
    Points : 1 224
    Points
    1 224

    Par défaut Petite coquille dans le tutoriel sur les designs Patterns en C++

    Bonjour.

    Sur le chapitre consacré à la fabrique, dans le dernier code, on peut lire :
    Code :
    1
    2
    3
    4
    [...]
    //fichier fabrique.cpp
    template <class Object,class Key> std::map<Key,Object*> Factory<Object,Key>::m_map=std::map<Key,Object*>();
    [...]
    or un .cpp (sauf s'il n'est pas enregistré en tant que source, mais c'est laid ) ne peut contenir de templates sur les compilateurs "standards".

    il faudrais probablement remplacer .cpp par autre chose (l'auteur semble utiliser les .inc).

    bon, c'est vraiment chercher des poux dans la tête des tutoriels, mais autant qu'il soient parfaits

    Et désolé de donner du boulot aux modos.
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...

  2. #2
    Rédacteur
    Avatar de Davidbrcz
    Homme Profil pro
    Supaéro-Cesure : Amadeus SAS
    Inscrit en
    juin 2006
    Messages
    2 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22

    Informations professionnelles :
    Activité : Supaéro-Cesure : Amadeus SAS

    Informations forums :
    Inscription : juin 2006
    Messages : 2 281
    Points : 3 654
    Points
    3 654

    Par défaut

    Ouais, cest pas faux. Mais de toute facon:
    1) tout l'article est en train detre revu en profondeur, j'hesite meme a le desactiver en attendant
    2) Je ne suis pas chez moi avant debut aout, je ne pourait donc rien faire en attendant.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  3. #3
    Modérateur
    Avatar de koala01
    Profil pro Philippe Dunski
    Inscrit en
    octobre 2004
    Messages
    9 661
    Détails du profil
    Informations personnelles :
    Nom : Philippe Dunski
    Âge : 42

    Informations forums :
    Inscription : octobre 2004
    Messages : 9 661
    Points : 15 972
    Points
    15 972

    Par défaut

    Salut,

    En fait, il n'y a aucune interdiction à ce qu'un fichier .cpp contienne du code template...

    La seule chose, c'est que l'on déconseille normalement d'inclure un fichier .cpp avec la directive préprocesseur #include, pour des raisons évidentes (de définitions multiples, entre autres).

    Or, pour que le compilateur soit en mesure de fournir le code binaire correspondant à une fonction (membre d'une classe) template, il doit... disposer du code de cette dernière

    Le fait de placer le code d'une fonction (membre d'une classe) template dans un fichier *.cpp revient donc à... ne fournir ce code que pour le fichier en question, ce qui peut parfois avoir quelques avantages, comme, par exemple, permettre d'attendre que le fichier d'en-tête d'une classe qui n'aurait été que déclarée anticipativement soit inclus
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  4. #4
    Membre Expert Avatar de méphistopheles
    Inscrit en
    janvier 2005
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Âge : 26

    Informations forums :
    Inscription : janvier 2005
    Messages : 1 552
    Points : 1 224
    Points
    1 224

    Par défaut

    d'accor, mais si le code template existe à moitié dans un .h et dans un .cpp, il va falloir mettre tout le reste du code du programme dans le .cpp... ça s'annonce joyeux

    enfin, au moins, il n'y aura pas de problèmes de doublons d'instanciations templates et ce, sans C++0x, c'est une bonne méthode en fait
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •