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++Builder Discussion :

templates et linkage


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut templates et linkage
    Bonjour a tous

    j'ai un template de classe (tree.cpp)
    son header (tree.h) est inclus partout ou c'est necessaire
    mais le linkeur me donne des erreurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [Linker Error] Unresolved external 'treenode<_dirrec_info>::delete_tree()' referenced from F:\DOCUMENTS\CAMENBERT\FICHE.OBJ
    ...
    J'ai une partie de la solution puisque quelqu'un y a repondu partiellement
    je cite Loulou24 dans le message:
    http://www.developpez.net/forums/vie...olved+external
    Citation Envoyé par Loulou24
    Parce que pour faire fonctionner l'inlining (ie. pour remplacer l'appel de fonction par son contenu), le compilo doit avoir accès à son corps. Or s'il est confiné dans une unité de traduction (.cpp) il n'y a pas accès. Même combat que les templates et les macros.
    Si quelqu'un pourrait me dire la methode pour faire fonctionner le linkage avec les templates je l'en remercie.

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    j'ai un template de classe (tree.cpp)
    son header (tree.h) est inclus partout ou c'est necessaire
    Le problème est là : le code template doit être inclus dans le source qui l'utilise et ne peut être sur une unité de compilation séparée. En quelque sorte, tout se passe comme si le compilateur engendrai le code source nécessaire lors de la spécialisation d'un template. Donc, en règle générale, on met le code des templates dans le .h, pas seulement les déclarations associées aux templates, et on inclut ce .h partout où c'est nécessaire.

  3. #3
    Invité
    Invité(e)
    Par défaut
    OK j'ai compris, merci bien

  4. #4
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    N'oubliez pas que les FAQs sont là pour répondre aux questions les plus courantes.

    http://c.developpez.com/faq/cpp/?pag...VERS_templates

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

Discussions similaires

  1. Template et probleme au linkage (seulement windows)
    Par elraton dans le forum Langage
    Réponses: 2
    Dernier message: 16/09/2010, 16h22
  2. Problème de linkage avec template
    Par Invité dans le forum Langage
    Réponses: 4
    Dernier message: 05/01/2008, 16h34
  3. Réponses: 5
    Dernier message: 24/09/2007, 16h43
  4. template match="node() mais pas text()"
    Par Manu_Just dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 26/03/2003, 10h52
  5. [XSLT] template
    Par demo dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 09/09/2002, 11h31

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