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 :

Compilation impossible, missing type specifier


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 389
    Par défaut Compilation impossible, missing type specifier
    Bonjour a tous,

    j'ai un petit soucie sur un bout de code qui ne veux pas compiler.
    J'ai une erreur type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    Je ne comprend pas pourquoi j'ai cette erreur, j'ai bien spécifier le type de retour....

    Voici le header de ma class (lineStyleParser.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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    #pragma once
    #include "LineStyle.h"
     
    using namespace std;
     
    /** 
     * Class qui permet la vérification et la récupération
     * de style de ligne depuis un fichier XML
     */
    class linestyleParser
    {
    public:
    	linestyleParser(const std::string& strLineStyleFile ,const std::string& strXMLGrammarFile);
    	~linestyleParser(void);
     
    	bool validate(void);
    	void loadLineStyle(void);
    	vector<LineStyle*>* getAllLineStyle();
     
     
    private:
    	std::vector<LineStyle*> *mVecLineStyle;
    	std::string mStrXMLLinesStyleFile;
    	std::string mStrXMLGrammarFile;
    	xercesc::XercesDOMParser *mFileParser;
     
    	bool valideFile(const string& file);
    	LineStyle* convertXMLtoLineStyleObject(const DOMElement* node); // Erreur sur cette ligne
    	std::string* convertXMLChtoString(const XMLCh* xmlch);
    };
    voici le code de la fonction qui pose problème (dans le fichier 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
    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
     
    /** 
     * Méthode permettant de créer un objet LineStyle a partir d'un sous arbre XML le représentant
     * @param: Noeud racine du sous arbre qui représente le style de ligne
     * @return un objet LineStyle représentant un style de ligne
     */
    LineStyle* linestyleParser::convertXMLtoLineStyleObject(const DOMElement* lineStyle)
    {
     
    	// recuperation de la view
    	DOMNode* viewNode=lineStyle->getElementsByTagName(XMLString::transcode("view"))->item(0);
    	const XMLCh * view=viewNode->getNodeValue();
     
    	// recuperation du style
    	DOMNode* styleNode=lineStyle->getElementsByTagName(XMLString::transcode("style"))->item(0);
    	const XMLCh * style=styleNode->getNodeValue();
     
    	// recuperation du nom
    	DOMNode* nameNode=lineStyle->getElementsByTagName(XMLString::transcode("name"))->item(0);
    	const XMLCh * name=nameNode->getNodeValue();
     
    	// recuperation des description
    	DOMNode* descriptionNode=lineStyle->getElementsByTagName(XMLString::transcode("description"))->item(0);
     
    	map<string,string> mapLanguage;
    	DOMNodeList* DomListLanguage =descriptionNode->getChildNodes();
    	for(unsigned int i=0;i<=DomListLanguage->getLength();i++)
    	{
    		DOMElement* elt= dynamic_cast< xercesc::DOMElement* >( DomListLanguage->item(i) );
    		DOMAttr* attribut= elt->getAttributeNode(XMLString::transcode("xml:lang"));
    		string strLang=convertXMLChToString(attribut->getValue());
    		string strDescription=convertXMLChToString(elt->getNodeValue());
    		mapLanguage[strLang]=strDescription;
    	}
     
    	// creation de l'objet lineStyle
    	LineStyle *linestyleObj=new LineStyle;
    	linestyleObj->setName(convertXMLChToString(name));
    	linestyleObj->setStyle(convertXMLChToString(style));
    	linestyleObj->setView(convertXMLChToString(view));
    	linestyleObj->setDescriptionMap(&mapLanguage);
     
    	return linestyleObj;
    }
    Avez vous une idée du problème ?
    Merci d'avance pour votre aide.

  2. #2
    Expert confirmé

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

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par défaut
    DOMElement n'est pas déclaré au moment où on y fait appel.
    Il faut donc que tu le déclares, pour cela tu as 2 méthodes :
    1/ Prédéclaration : tu déclares la classe DOMElement au début de ton fichier LineStyleParser.h et tu inclus le fichier contenant la description de la classe dans LineStyleParser.cpp
    2/ Inclusion "Sauvage" du fichier contenant la description de la classe dans LineStyleParser.h
    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).

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 389
    Par défaut
    En faite oui il est déclarer,
    voici l'entete de ma class (.cpp)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #include "StdAfx.h"
    #include "linestyleParser.h"
     
    using namespace xercesc;
    using namespace std;
    et dans le fichier StdAfx.h (inclu en premier)
    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
     
    #include <xercesc/util/XMLString.hpp>
    #include <xercesc/parsers/XercesDOMParser.hpp>
    #include <xercesc/framework/LocalFileInputSource.hpp>
    #include <xercesc/sax/ErrorHandler.hpp>
    #include <xercesc/sax/SAXParseException.hpp>
    #include <xercesc/validators/common/Grammar.hpp>
    #include <xercesc/dom/DOM.hpp>
    #include <xercesc/dom/DOMDocument.hpp>
    #include <xercesc/dom/DOMDocumentType.hpp>
    #include <xercesc/dom/DOMElement.hpp>
    #include <xercesc/dom/DOMImplementation.hpp>
    #include <xercesc/dom/DOMImplementationLS.hpp>
    #include <xercesc/dom/DOMNodeIterator.hpp>
    #include <xercesc/dom/DOMNodeList.hpp>
    #include <xercesc/dom/DOMText.hpp>
    #include <map>
    #include <iostream>
    #include <sys/stat.h>
    #include <string>
    #include <stdexcept>
    #include <vector>
    EDIT: j'ai fais le boulet, j'ai oublié le namespace xercesc::

    Donc résolu. merci pour ton aide

  4. #4
    Expert confirmé

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

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par défaut
    Il te manque alors certainement le xercesc:: avant l'utilisation du nom dans ton .h (dans le .cpp tu as mis le using namespace)
    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).

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 389
    Par défaut
    J'ai directement rajouter le namespace
    Encore merci pour ton aide

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 10/09/2014, 09h36
  2. Type specifier missing
    Par MrAnderson dans le forum Débuter
    Réponses: 2
    Dernier message: 21/04/2013, 03h19
  3. Réponses: 0
    Dernier message: 13/01/2011, 23h08
  4. Réponses: 10
    Dernier message: 05/06/2008, 18h22
  5. Compilation impossible
    Par Michaël dans le forum GTK+ avec C & C++
    Réponses: 6
    Dernier message: 20/08/2003, 14h16

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