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

Objets Globaux en c++ Manag�


Sujet :

C++/CLI

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2008
    Messages
    3
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 3
    Par d�faut Objets Globaux en c++ Manag�
    Bonjour tout le monde !

    Je suis en train de d�velopper un programme en C++ manag� avec Visual Studio .net 2003, j'ai beaucoup cherch� sur des forums et sur des sites, mais en vain, c'est pourquoi je vous demande un peu d'aide .

    Une des t�ches que je dois r�aliser est la s�rialisation XML de classes, ce qui fait que je dois utiliser du c++ manag�.
    Le probl�me, c'est que j'ai " absolument " besoin d'avoir un ou plusieurs objets d�clar�s en global. Le probleme , c'est qu'en manag�, c'est pas permis ...
    Premi�re question donc, comment contourner ce probl�me, j'ai d�j� essay� de ruser en encapsulant, mais en vain ....

    Ensuite ( mais je pense que quand je saurai comment faire une d�laration en global, �a ira mieux ) j'ai aussi besoin de stocker des informations pars�es depuis un fichier externe dans plusieurs vecteurs, toujours en global. Le hic, c'est que "vector" ne peut pas g�rer des objets manag�s.
    J'ai deja un peu regard� ArrayList, mais le probl�me c'est que je perds le type de mes donn�es une fois stock�es, et quand je s�rialise en XML, j'ai "ArrayofAnyType" ...

    Merci beaucoup d'avance

  2. #2
    R�dacteur/Mod�rateur


    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    F�vrier 2004
    Messages
    19 875
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur .NET
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 19 875
    Par d�faut
    Tu peux "simuler" une variable globale en la mettant en membre statique d'une classe :
    Code C++ : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    ref class UneClasse
    {
        public:
            static Object^ UneVariableGlobale;
    }

    Pour ton probl�me de vecteur, tu peux utiliser la classe g�n�rique System.Collections.Generic.List<T> (plus ou moins �quivalente � la classe vector de la STL)

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2008
    Messages
    3
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 3
    Par d�faut
    Merci de ta r�ponse rapide !

    J'ai essay� ce que tu m'a propos� en ce qui concerne les variables globales, cette erreur apparait :

    "cannot declare a global or static managed type object or a __gc pointer"

    Il s'agit de la m�me erreur que j'ai depuis que j'essaye de faire des variables globales en manag�.

    Aussi, je ne dispose pas de System.Collections.Generic.List...
    Le seul truc qui semble s'en rapprocher est System::Collections::IList, mais � mon avis je ne suis pas sur la bonne voie ...

  4. #4
    R�dacteur/Mod�rateur


    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    F�vrier 2004
    Messages
    19 875
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur .NET
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 19 875
    Par d�faut
    Ah ? ben chez moi �a fonctionne...
    Au fait, tu travailles avec quelle version de VS ? et du framework ? Ce que j'ai dit est valable � partir de VS2005 / .NET 2.0... les g�n�riques n'existaient pas en .NET 1.x, et "ref class" s'�crivait "__gc class" (il me semble)

  5. #5
    Expert confirm�
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par d�faut
    Au fait, dans l'exemple de tomlev, il ne faut pas par la suite cr�er une instance de UneClasse, mais y acc�der via UneClasse::UneVariableGlobale. Enfin, c'est juste une impression ...

  6. #6
    Candidat au Club
    Inscrit en
    Juillet 2008
    Messages
    3
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 3
    Par d�faut
    Je suis en VS 2003, framework 1.1.

    Moi, ^ provoque une erreur � la complilation et je dois utiliser * � la place.

    En fait, j'ai une classe manag�e "program" qui est en quelque sorte la racine de mon fichier XML. Elle contient ,entre autres, un vecteur de variables globales de taille variable ( que je n'arrive toujours pas � faire vu que vector est non manag�, et que System::Collections::Generic::List ne m'est pas disponible.

    Lorsque j'essaye de cr��r PG en global comme ceci :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    	static  program __gc * PG = __gc new program() ;
    j'obtiens
    "cannot declare a global or static managed type object or a __gc pointer"
    J'ai m�me essay� de faire une classe qui ne comprend que PG, mais �a donne le m�me r�sultat.

    Mon .cpp principal est organis� comme ceci :

    ** Variables globales ( c'est ici que je veux mettre PG )

    ** namespace {
    .... contient des fonctions qui utilisent PG, elles instancient les objets issus du parsing
    }

    ** Ensuite une grammaire de parsing :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    struct cga_grammar : public grammar<cga_grammar>
    {
    	template <typename ScannerT>
    	struct definition
    	{
    		definition(cga_grammar const& /*self*/)
    		{ ... }
               }      
    }
    ** Enfin, le main qui lance le parsing et serialise en XML

    Le fait de mettre PG dans le main ne convient pas car il n'est pas alors accessible dans les fonctions du name space ......

    J'esp�re avoir �t� clair, merci encore

  7. #7
    Expert confirm�
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par d�faut
    tu m'as vu ?

    Citation Envoy� par smyley Voir le message
    Au fait, dans l'exemple de tomlev, il ne faut pas par la suite cr�er une instance de UneClasse, mais y acc�der via UneClasse::UneVariableGlobale. Enfin, c'est juste une impression ...

  8. #8
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    La liste fortement typ�e n'est pas accessible au C++ manag� (d'ailleurs au passage, si t'as l'occasion de passer au C++/CLI, ne te gene pas !)

    L'arrayList n'est pas typ�e, c'est donc normal que tu n'ais pas de notion de type. Si tu veux la conserver, tu devras toi meme l'ajouter.

Discussions similaires

  1. Ajouter des objets � une liste multiprocessing.Manager.list()
    Par thepepper dans le forum G�n�ral Python
    R�ponses: 4
    Dernier message: 06/07/2010, 14h27
  2. Disposition d'Objets globaux
    Par Carrel dans le forum Servlets/JSP
    R�ponses: 1
    Dernier message: 27/06/2009, 12h35
  3. [C++]sizeof d'un objet manag�e
    Par Akta3d dans le forum C++/CLI
    R�ponses: 4
    Dernier message: 22/12/2006, 12h15
  4. Probleme utilisation d'Objets manag� grace a gcroot
    Par pepefourras dans le forum MFC
    R�ponses: 4
    Dernier message: 16/05/2006, 00h26
  5. [MFC] Objets globaux.
    Par giova_fr dans le forum MFC
    R�ponses: 4
    Dernier message: 07/07/2005, 16h36

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