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 :

Utilisation de classe deja instanci�s


Sujet :

C++

  1. #1
    Membre confirm� Avatar de Verbalinsurection
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2007
    Messages
    127
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activit� : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 127
    Par d�faut Utilisation de classe deja instanci�s
    Bonjour � tous !

    �a faisait un petit moment que j'�tais pas venu mais l� je bute sur un probl�me qui me parais bizarre, je m'explique :
    Par exemple dans une fonction j'instancie une classe, je cr�er mon nouvel objet qui se nomme toto, je cr�e par la suite un nouvel objet issue d'un classe diff�rente du premier que j'appel tutu.

    L'objet tutu, dans son constructeur doit acc�der � des informations contenu dans toto par exemple :

    • toto est la classe contenant les infos d'un utilisateur
    • tutu est la classe de la fen�tre qui doit afficher ces infos, comment fait-elle pour afficher ces infos �tant donn� que l'objet n'a pas �t� cr�er par elle donc elle ne connait pas son adresse?


    J'esp�re que j'ai �t� asser clair dans mon explication et je vous remercie d'avance pour votre aide

  2. #2
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

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

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    Qu'est-ce qui t'emp�che de passer au constructeur de tutu une lien (pointeur, shared_ptr, r�f�rence...) vers l'objet toto qui lui est associ� ?
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

  3. #3
    Membre chevronn�
    Avatar de NewbiZ
    Profil pro
    �tudiant
    Inscrit en
    Juillet 2002
    Messages
    184
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juillet 2002
    Messages : 184
    Par d�faut
    ...Ou de faire une requ�te � un singleton UserManager.

    C'est pas les solutions qui manquent!

  4. #4
    Membre confirm� Avatar de Verbalinsurection
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2007
    Messages
    127
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activit� : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 127
    Par d�faut
    Merci � vous deux

    JolyLoic -> Oui mais par exemple, si je veux cr�er tutu dans une fonction diff�rente de celle o� je cr�er toto? il faut passer un pointeur de fonction en fonction?
    Je connais pointeur et r�f�rence mais qu'es ce que shared_ptr ?

    NewbiZ -> Peux tu m'expliquer ce qu'est une requ�te � un singleton UserManager? �a m'interesse

    Et surtout encore merci � vous

  5. #5
    R�dacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supa�ro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Ing Supa�ro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par d�faut
    Voici un exemple de ce que propose JolyLoic
    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
    #include <string>
     
    class Toto
    {
    std::string m_name;
    public:
    std::string getName() const {return m_name;}
    };
     
    class Tutu
    {
    public:
     
    Tutu(const Toto* const toto)
    {
     
            if(toto!=0)
            {   
            std::string name=toto->getName();
            }
    }
     
    };
     
    Toto* foo()
    {
      return new Toto;
    }
     
    int main()
    {
    Tutu tutu(foo());
    return 0;
    }
    Edit : NewbiZ >> je pense que c'est une id�e assez mauvaise.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une tr�s bonne doc sur le C++ (en) Why linux is better (fr)

  6. #6
    Membre confirm� Avatar de Verbalinsurection
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2007
    Messages
    127
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activit� : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 127
    Par d�faut
    Merci � toi Davidbrcz !

    J'ai un peu de mal � comprendre ton code je dois avouer

    Voici un truc plus clair de ma question :
    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
    class Toto
    {
    public:
    	int numeroDebut;
    };
     
    class Tutu
    {
    public:
    	int numero;
    };
     
    void test()
    {
    	//Ici je veux pouvoir appeller un un nouveau thread mais qu'il puisse créer et agire sur Toto en recuperant des infos de tutu
    	//dois-je passer en parametre à test un pointeur vers tutu puis à mon nouveau thread encore un pointeur vers tutu ?
    }
     
    int main()
    {
    	Tutu tutu;
    	test();
    	return 0;
    }

  7. #7
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    D�tails du profil
    Informations personnelles :
    �ge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par d�faut
    Salut,

    soit tu passes par une variable globale,

    soit:

    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
    class Toto
    {
    public:
    	int numeroDebut;
    };
     
    class Tutu
    {
    public:
    	int numero;
    };
     
    void test(TuTu &tutu)
    {
          //On peut modifier l'objet tutu du main directement ici maintenant.
    }
     
    int main()
    {
    	Tutu tutu;
    	test(tutu);
    	return 0;
    }

  8. #8
    Membre chevronn� Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Par d�faut
    Je te deconseille d'utiliser des variables globales.
    Sinon pour imager un Singleton:
    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
    class Tutu
    {
    	static Tutu* _this;
    private:
    	Tutu() {} //Privé pour pas l'utiliser directement
    public:
    	static Tutu* getInstance();
     
    	int numero; //Pas bien !
    };
     
    Tutu* Tutu::_this = NULL;
     
    Tutu* Tutu::getInstance()
    {
    	if ( _this == NULL )
    		_this = new Tutu();
    	return _this;
    }
     
    int main()
    {
    	Tutu::getInstance()->numero = 123;
    }
    Attention ce code pour un singleton est purement didactique

  9. #9
    R�dacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supa�ro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Ing Supa�ro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par d�faut
    Je te deconseille d'utiliser des variables globales.
    Sinon pour imager un Singleton:
    Un singleton c'est une variable globale. Certe enrob�e mais globale quand m�me.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une tr�s bonne doc sur le C++ (en) Why linux is better (fr)

  10. #10
    Membre chevronn� Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Par d�faut
    En programmation informatique, une variable globale est une variable d�clar�e � l'ext�rieur du corps de toute fonction ou classe, et pouvant donc �tre utilis�e n'importe o� dans le programme. Wikipedia
    Pour mon conseil d�viter l'utilisation de variable globale, je le tiens du livre Le langage C++ (de Bjarne Stroustrup).
    le singleton est un patron de conception (design pattern) dont l'objet est de restreindre l'instanciation d'une classe � un seul objet. Wikipedia
    Chaqu'un son point de vue, mais pour affirmer qu'un singleton est une variable globale il faut avoir un niveau d'abstraction assez �lev�, qui pour moi n'aide pas la compr�hention d'un d�butant.

Discussions similaires

  1. R�ponses: 4
    Dernier message: 11/01/2012, 17h59
  2. Utilisation de toutes les instances d'une classe dans un while
    Par canaboss dans le forum D�buter avec Java
    R�ponses: 12
    Dernier message: 28/04/2008, 15h28
  3. [Taglibs] Utiliser les classes css ?
    Par PeteMitchell dans le forum Struts 1
    R�ponses: 4
    Dernier message: 05/05/2007, 01h31
  4. utiliser des classes dont on n'a pas le source
    Par kocin dans le forum Eclipse Java
    R�ponses: 2
    Dernier message: 28/08/2004, 16h05
  5. [Debutant] probleme pour utiliser les classes d'un .jar
    Par pissek dans le forum Eclipse Java
    R�ponses: 3
    Dernier message: 12/05/2004, 18h21

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