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

cherchez l' erreur


Sujet :

C++

  1. #1
    Membre averti
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Points : 387
    Points
    387
    Billets dans le blog
    3
    Par défaut cherchez l' erreur
    Bonjour tout le monde.
    Voilà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #include <iostream>
    #include "tableauInt.h"
     
    int main()
    {
        TABLEAU_INT MonTableau;
     
        return 0;
    }
    et voilà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    F:\Program Files\CodeBlocks\main.cpp|9|error: expected `}' at end of input|
    F:\Program Files\CodeBlocks\main.cpp|9|error: expected unqualified-id at end of input|
    ||=== Build finished: 2 errors, 0 warnings ===|
    Moi y-en a pas comprendre ?!

  2. #2
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    je suppose que TABLEAU_INT est une macro? Sans la définition de celle ci on va pas aller loin..
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  3. #3
    screetch
    Invité(e)
    Par défaut
    possiblement l'erreur pourrait aussi etre dans le fichier header TableauInt.h

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par screetch Voir le message
    possiblement l'erreur pourrait aussi etre dans le fichier header TableauInt.h
    Plus que possiblement même. Vu qu'elle n'est pas dans le code posté ni dans <iostream>, c'est sûr à 100%
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  5. #5
    screetch
    Invité(e)
    Par défaut
    oui c'est pas faux je précise ma pensée: si ce n'est une macro TABLEAU_INT ca pourrait être une accolade fermante qui manque (théorie numéro 1) ou bien en général, la structure du fichier tableauInt.h qui serait telle la tour de pise (bancale)

  6. #6
    Membre averti
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Points : 387
    Points
    387
    Billets dans le blog
    3
    Par défaut
    Merci à vous ; effectivement il manquait une parenthèse fermante au sein
    de TableauInt.h
    Pendant que j'y suis ...
    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 TABLEAUINT_H_INCLUDED
    #define TABLEAUINT_H_INCLUDED
     
    class   TABLEAU_INT {
    public :
        TABLEAU_INT(const int nbElement=TAILLE_PAR_DEFAUT) {Init(nbElement,0);}// Initialise nbElement de tableau
        TABLEAU_INT(int *table,int nbElement) {Init(nbElement,table);}// Copie d'un tableau : t[nbElement]
        TABLEAU_INT(const TABLEAU_INT &original) {Init(original._dimension,original.pTableau);}// Constructeur de recopie
        ~TABLEAU_INT() {delete [] pTableau;}// Destructeur
    private :
        void    Init(int,int *);
        int _dimension;
        int *pTableau;
        static const int TAILLE_PAR_DEFAUT = 10;
    };
     
    #endif // TABLEAUINT_H_INCLUDED
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #include "tableauInt.h"
     
    void    TABLEAU_INT::Init(int size,int *pIntArray)
    {
        _dimension = size;
        pTableau = new int[_dimension];
        if(pIntArray)
        {
            for(int i=0;i<_dimension;i++) pTableau[i]=0;
        }
        else
            for(int i=0;i<_dimension;i++) pTableau[i]=pIntArray[i];
    }
    et revoilà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    obj\Release\main.o:main.cpp|| undefined reference to `TABLEAU_INT::Init(int, int*)'|
    ||=== Build finished: 1 errors, 0 warnings ===|
    (va peut etre falloir que j'arrête le C++ moi )

  7. #7
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 391
    Points
    11 391
    Billets dans le blog
    11
    Par défaut
    ton fichier .cpp qui contient l'implémentation de ton TABLEAU_INT est bien compilé ?
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  8. #8
    Membre averti
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Points : 387
    Points
    387
    Billets dans le blog
    3
    Par défaut
    ton fichier .cpp qui contient l'implémentation de ton TABLEAU_INT est bien compilé ?
    Absolument !!
    Voici le journal du build :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Compiling: main.cpp
    Linking console executable: bin\Release\UneClasseTableau.exe
    obj\Release\main.o:main.cpp:(.text+0x2e): undefined reference to `TABLEAU_INT::Init(int, int*)'
    collect2: ld returned 1 exit status
    Process terminated with status 1 (0 minutes, 0 seconds)
    1 errors, 0 warnings

  9. #9
    Invité
    Invité(e)
    Par défaut
    Justement dans le build il n'y a aucune ligne indiquant que le fichier tableauInt.cpp (ou quelque soit son nom) est compilé, du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Compiling : tableauInt.cpp
    Essaye de faire un rebuild, si il n'ya toukours aucune ligne de ce genre, c'est que ton projet ne considère pas tableauInt.cpp comme un fihcier source à compiler...

  10. #10
    Membre averti
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Points : 387
    Points
    387
    Billets dans le blog
    3
    Par défaut
    Toujours rien après un Rebuild
    Comment se fait-il que le projet ne considère pas tableauInt.cpp
    comme un fichier source à compiler ???
    Tous les fichiers sont au bon endroit -- comment on peut faire plus simple ???
    Chui vraiment dans la meumeu alors !!

  11. #11
    Invité
    Invité(e)
    Par défaut
    Ca dépend de ton EDI(vu que tu en utilise un, non? ) meme s'il y certaines ressemblances entre les EDI
    Si tu as CodeBlocks :
    -clic droit sur ton ficier tableauInt.cpp
    --> menu properties... (ou propriété si c'est en français)
    --> onglet Build
    --> tu vérifie que les case Compile et Link sont bien cochées
    Si tu as un autre EDI, essaye de voir s'il n'y a pas quelque chose de similaire

  12. #12
    Membre averti
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Points : 387
    Points
    387
    Billets dans le blog
    3
    Par défaut
    Exact c bien code block
    g vérifié et tout est bien coché ... peut etre faut-il que je construise en Debug
    plutôt que Release ?!

  13. #13
    Invité
    Invité(e)
    Par défaut
    As tu aussi vérfié que tous tes fichiers appertenaient bien aux bonnes cibles(belongs to targets) ? C'est à dire que pour chacun d'entre eux les cases Debug et Release etaient cochées ?

    EDIT : il y une erreur dans ton implémentation de Init, lorsque tu teste la validité de pArray, qui risque de te provoquer une Segfault

  14. #14
    Membre averti
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Points : 387
    Points
    387
    Billets dans le blog
    3
    Par défaut
    YES !!!!!!!!
    ça marche ! Effectivement je ne suis pas un fin connaisseur de CodeBlocks
    et je n'avais pas coché les cases dont tu as parlé (d'habitude j'utilise VS)
    Sauf que maintenant le problème vient de la variable statique de la classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    static const int TAILLE_PAR_DEFAUT = 10;
    Je crois que ça va etre coton .
    Merci pour ton aide précieuse

  15. #15
    Invité
    Invité(e)
    Par défaut
    Tu peux tenter de la remplacer par une enumeration(mais chez moi ça compile avec la variable statique, quelle est ton erreur ?) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class tableauInt
    {
    private:
         enum { TAILLE_PAR_DEFAUT = 10 };
    public:
    ///....
    };
    Pour ce qui est des cible je parierais que lorsque tu a fait "Ajouter un fichier", tu n'a pas pensé à cliquer sur le bouton "Select all", à la derniere étape.

    N'oublie pas non plus de corriger ta fonction Init.

  16. #16
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    L'enum, ou mieux un paramètre template... (et pour l'erreur c'est pas étonnant certains vieux compilateur ne supportent pas l'initialisation dans une classe de constante statique.
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  17. #17
    Membre averti
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Points : 387
    Points
    387
    Billets dans le blog
    3
    Par défaut
    L'enum, ou mieux un paramètre template...
    Excuse mon ignorance Goten mais je n'ai aucune idée de la façon de se servir
    des paramètres template
    Comment ça marche

  18. #18
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    template <int N = 10>
    class TABLEAU_INT
    {
        TABLEAU_INT(const int nbElement=N) {Init(nbElement,0);}// Initialise nbElement de tableau
        //...
    };
    au passage, évite les noms de class en majuscule, c'est traditionnellement réservé au macro.
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  19. #19
    Membre averti
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Points : 387
    Points
    387
    Billets dans le blog
    3
    Par défaut
    Bon finalement ça fonctionne avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    enum { TAILLE_PAR_DEFAUT = 10 };
    Le paramètre template provoque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    F:\Program Files\CodeBlocks\MyProjects\UneClasseTableau\tableauInt.cpp|3|error: `template<int TAILLE_PAR_DEFAUT> class TABLEAU_INT' used without template parameters|
    Merci à tous

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

Discussions similaires

  1. Formulaire VB 6 : Cherchez l'erreur
    Par ronanmoule dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 24/04/2008, 18h22
  2. Explorateur: cherchez l'erreur
    Par Chekov dans le forum Windows Vista
    Réponses: 2
    Dernier message: 19/09/2007, 11h50
  3. [XML] Cherchez l'erreur
    Par loic_86 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 06/03/2007, 09h50
  4. [AJAX] liste liée ajax: s'iou plait, cherchez l'erreur
    Par redwire dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/09/2006, 20h26
  5. Clé primaire ? cherchez l'erreur
    Par Aargol dans le forum Langage
    Réponses: 2
    Dernier message: 09/06/2006, 08h24

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