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 :

Probleme d utilisation de template dans le cpp


Sujet :

Langage C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Points : 35
    Points
    35
    Par défaut Probleme d utilisation de template dans le cpp
    le .h

    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 _MATRIX 
    # define _MATRIX 
     
    # include "Matrix.h" 
     
     
    template<class U,int n> 
    Matrix<U,n>::Matrix(const int aNbElem[]){ 
       if ( n!=0){ 
          int Nb=0; 
          NbElem   = new int[n]; 
          for(int i=0;i<n;i++)   {   NbElem[i]=aNbElem[i];   Nb*=NbElem[i];   } 
          if (Nb!=0)   pMatrix= new U[Nb]; 
       } 
    } 
     
     
    #endif

    le . cpp

    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
    19
    # ifndef _MATRIX 
    # define _MATRIX 
     
    #include <math.h> 
     
     
    template< class U,int n=1> 
    class Matrix{ 
     
    public: 
     
       Matrix(const int aNbElem[]);    
     
    public: 
     
       int   *NbElem; 
       U   *pMatrix; 
     
    };
    le message d'erreur est
    c:\programcpp\stcdo\stcdoproject\cdopricing\headerfiles\matrix.cpp(27) : error C2143: syntax error : missing ';' before '<'
    c:\programcpp\stcdo\stcdoproject\cdopricing\headerfiles\matrix.cpp(27) : error C2501: 'Matrix' : missing storage-class or type specifiers
    c:\programcpp\stcdo\stcdoproject\cdopricing\headerfiles\matrix.cpp(27) : error C2059: syntax error : ';'
    c:\programcpp\stcdo\stcdoproject\cdopricing\headerfiles\matrix.cpp(27) : error C2143: syntax error : missing ';' before '<'
    Error executing cl.exe.


    Ou fais je une erreur?

  2. #2
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 753
    Points : 10 704
    Points
    10 704
    Billets dans le blog
    3
    Par défaut Re: Probleme d utilisation de template dans le cpp
    Tu fais plusieurs erreurs. Je suppose dans ton post déjà, ou je présume qu'il faut inverser .h et .cpp.
    Ensuite,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    # ifndef _MATRIX 
    # define _MATRIX 
     
    # include "Matrix.h" 
     
    // ...
    donc le code de Matrix.h va être inclus, ce qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # ifndef _MATRIX 
    # define _MATRIX 
     
    # ifndef _MATRIX 
    # define _MATRIX 
     
    #include <math.h> 
     
    //...
    donc, à cause du #define _MATRIX dans le .cpp, le code du .h est ignoré.
    http://c.developpez.com/faq/cpp/?pag...ASS_header_cpp

    Enfin, un template, sauf cas très cpécial, ne doit pas être implémenté à part dans un .cpp, à moins de tricher.
    http://c.developpez.com/faq/cpp/?pag...VERS_templates

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Points : 35
    Points
    35
    Par défaut
    merci en effet j ai inverser le cpp et h dans mon exemple J ai ete tres distarit et recopie betement l entete du .h dans le cpp il faut plutot ecrire #ifdef
    Merci et désolé pour cette erreur d etourderie

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

Discussions similaires

  1. Probleme de template dans un fichier .cpp
    Par bouritosse dans le forum Débuter
    Réponses: 6
    Dernier message: 01/10/2014, 14h44
  2. Probleme d'utilisation de classe dans JSP /Tomcat
    Par marouene_ dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 24/02/2011, 17h26
  3. Réponses: 18
    Dernier message: 13/10/2010, 14h11
  4. Probleme d'utilisation d'images dans mon fichier css
    Par lazins dans le forum NetBeans
    Réponses: 4
    Dernier message: 02/10/2008, 20h30
  5. Utilisation de template dans un role de fonctions/procedures
    Par Punky65250 dans le forum XSL/XSLT/XPATH
    Réponses: 14
    Dernier message: 01/09/2004, 10h05

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