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 :

erreur: expected unqualified-id


Sujet :

C++

  1. #1
    Membre éclairé
    Avatar de Le Barde
    Homme Profil pro
    Chanteur
    Inscrit en
    Juillet 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chanteur

    Informations forums :
    Inscription : Juillet 2007
    Messages : 343
    Par défaut erreur: expected unqualified-id
    Bonjour à tous,
    Étant relativement débutant dans le C++, j'essaye de faire quelque-chose de clean...
    Je vous poste ici les messages d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    adrien@adrien-portable:~/Documents/Travail/recherche/StageFlowShop/C++$ make
    g++ -c -pipe -Wall -W -O2 -D_REENTRANT  -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED -DQT_TABLET_SUPPORT -I/usr/share/qt3/mkspecs/default -I. -I/usr/include/qt3 -o Application.o Application.cpp
    Flowshop/Atelier.h:19: erreur: expected unqualified-id before «)" token
    Flowshop/Atelier.h:20: erreur: expected unqualified-id before «int"
    Flowshop/Atelier.h:20: erreur: expected `)' before «int"
    Flowshop/Atelier.h:21: erreur: expected class-name before «(" token
    Flowshop/Atelier.h:5: erreur: un UNION  anonyme ne peut avoir de fonctions membres
    Flowshop/Atelier.h:32: erreur: abstract declarator «<anonymous class>" used as declaration
    [...]
    Je vous poste ici la méthode principale + la classe utilisée :

    Méthode principale, toute simple :
    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
    #include "Flowshop/Atelier.h"
    #include "Flowshop/Ordo.h"
    #include "Flowshop/BandB/BandB.h"
     
    //#include "ClanLib/
     
    int main(int argc, char** argv)
    {
    	Atelier* PetitAtelier;
    	BandB* ResolBandB;
    	Ordo* Ordonnancement;
     
    	PetitAtelier = new Atelier();
    	Ordonnancement = new Ordo();
    	ResolBandB = new BandB(Ordonnancement);
    	~PetitAtelier();
    }
    .h de la classe utilisée :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    #ifndef Atelier
    #define Atelier
     
    class Atelier
     
    {
     
    protected:
     
    	int nbJob;	// Nombre de travaux
     
    	int nbMach;	// Nombre de machines
     
    	double** pij;	// Durees operatoires
     
     
    public:
     
    	int NbJob;
     
    	int NbMach;
     
    public:
     
    	Atelier();
    	Atelier(int i, int j);
    	~Atelier();
     
    	void Redim(int i,int j);	
     
    	int GetNbMach();
    	void SetNbMach(int nbMach);
    	double Pij(int i, int j);
     
    	void Pij(int i, int j, double val);
     
     
    	// Fonctions de tirage aleatoire des durees operatoires
     
    	void CreePijUniforme(double min, double max);
     
    	void CreePijUniforme(double min, double max, int seed);
     
    	void CreePijGoulot(int goulot, double min, double max, double mult, int seed);
     
    };
     
     
    #endif
    Deux choses m'intriguent : "un UNION anonyme ne peut avoir de fonctions membres" et cette histoire de unquilified-id.

    Qu'en concluez-vous ?

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 258
    Par défaut
    Citation Envoyé par Le Barde
    .h de la classe utilisée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #ifndef Atelier
    #define Atelier
     
    class Atelier
    {
        // ...
    };
    #endif
    L'erreur vient de la garde d'inclusion (#ifndef / #define) qui porte le même nom que la classe : l'instruction #define Atelier va forcer le préprocesseur à remplacer tous les mots Atelier par une chaine vide. Tu définis donc une classe anonyme (ce qui est autorisé), mais tu obtient une erreur de syntaxe pour tes constructeurs et ton destructeur, ce qui te donne les erreurs de compilation que tu mentionnes. Remplace le Atelier du #ifndef/#define par un Atelier_h (le nom du fichier plutot que celui de la classe), et tout rentre dans l'ordre.

    Autre chose : dans ton main, il ne faut pas faire d'appel explicite au destructeur (ceux-ci sont extrêment rares), mais appeler delete PetitAtelier ;

  3. #3
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Bonjour,

    Plusieurs remarques :
    - Lorsque tu créés une instance d'une classe (Atelier, ...) dynamiquement (avec un pointeur : Atelier* par exemple), tu dois le détruire en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Atelier* a; // on déclare une variable de type Atelier*, autrement dit un pointeur vers un Atelier
    a = new Atelier(); // on l'instancie : on réserve une zone en mémoire et on exécute le code de son constructeur
    // ... tu te sers de a
    delete a; // ceci efface la zone mémoire occupée par ce vers quoi pointe a et empêche donc une fuite qui aurait pu être causée si l'on ne mettait pas ce delete
    Ceci est valable quel que soit le type qui est pointé.

    - Le reste a été dit précédemment visiblement, grilled

  4. #4
    Membre éclairé
    Avatar de Le Barde
    Homme Profil pro
    Chanteur
    Inscrit en
    Juillet 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chanteur

    Informations forums :
    Inscription : Juillet 2007
    Messages : 343
    Par défaut
    Merci beaucoup ! En effet, c'était donc ça

    Pour le delete, c'est réparé également.
    Encore, merci beaucoup.

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

Discussions similaires

  1. erreur : expected unqualified-id before '+' token
    Par issmaz dans le forum Débuter
    Réponses: 3
    Dernier message: 27/10/2011, 10h21
  2. Erreur de compilation : expected unqualified-id
    Par richard_sraing dans le forum C++
    Réponses: 9
    Dernier message: 08/12/2008, 12h10
  3. Réponses: 4
    Dernier message: 30/11/2008, 21h30
  4. erreur: expected class-name before «{"
    Par mansour67 dans le forum wxWidgets
    Réponses: 7
    Dernier message: 08/04/2008, 18h57
  5. Réponses: 5
    Dernier message: 13/03/2006, 15h51

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