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 :

problème de namesapce


Sujet :

C++

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 126
    Par défaut problème de namesapce
    Bonjour,

    Je bloque sur un problème avec un namespace que j'ai créé :

    2 fichiers f1 et f2 déclarent respectivement 2 classes c1 et c2 dans le même namespace np.

    mais quand je déclare dans c1 une méthode
    void doSomething(np::c2^ obj)
    Il a le culot de me sortir une erreur C2039 c2 n'est pas un membre de np ...

    Le code des entêtes si ça vous aide :
    Code Layer_Part_wrapper.h : 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
    #pragma once
     
    #include <vector>
    #include <string>
    #include <vcclr.h>
    #include <windows.h>
     
    #include "Layer_part.h"
    #include "Map_wrapper.h"
     
     
    namespace MapnikWrap
    {
    	public ref class Layer_Part_wrapper
    	{
    	private:
    		System::String^ _filter;
    		int _order;
    		Layer_part* _lp;
    	public:
    		Layer_Part_wrapper(System::String^ expression_filter, int order);
    		void addPolygon(System::String^ expr_filter, int order, int fillColor);
    		void addLine(System::String^ expr_filter, int order, int color, double width, int dash_type); 
     
    		void applyStylesToMap(MapnikWrap::Map_wrapper^ map);		
    	};
    }

    Code Map_wrapper.h : 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
    #pragma once
     
    //#define BOOST_SPIRIT_THREADSAFE
     
    //This trick keeps freetype.h from crashing due to a generic reserved word useage
    //#define generic GENERIC
    #pragma managed(push, off)
    #include <mapnik/map.hpp>
    #include <mapnik/color.hpp>
    #pragma managed(pop)
    //#undef GENERIC
     
    #include "Layer_Part_wrapper.h"
    namespace MapnikWrap
    {
    	public ref class Map_wrapper
    	{
    	private :
    		mapnik::Map* _map;
    	public:
    		Map_wrapper(void);
    		Map_wrapper(int width, int height, int backColor);
    		Map_wrapper(int width, int height, int backColor, System::String^ coordSysType);
     
    		mapnik::Map* getMap();
    	};
    }

    L'erreur se situe dans Layer_Part_wrapper.h à la déclaration de void applyStylesToMap(MapnikWrap::Map_wrapper^ map);
    Sois-disant "Map_Wrapper" n'est pas un membre de MapnikWrap ... alors que l'auto-complétion elle-même me propose bien la classe ...

    je m'en remets à vous

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 126
    Par défaut
    ok j'ai trouvé mon souci ...

    Ca vient de l'ordre des includes

    F2 include F1
    et F1 include F2
    => donc il tente de compiler F2 en premier mais dans ce cas, c1 n'existe pas encore ...

    En fait dans F1 j'avais une fonction statique de conversion de System::String^ en std::string. J'ai déplacé cette fonction dans F2 (car elle est utilisée dans c1 et dans c2, d'où l'include de F1 dans F2) et j'ai pu supprimer l'include de F1 dans F2

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

Discussions similaires

  1. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  2. Problème d'impression
    Par IngBen dans le forum C++Builder
    Réponses: 7
    Dernier message: 22/05/2002, 11h37
  3. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  4. Réponses: 6
    Dernier message: 25/03/2002, 21h11

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