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 :

Interrogation sur les interfaces


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    36
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 36
    Par d�faut Interrogation sur les interfaces
    Je vous soumets ce petit bout de code �pur� pour avoir votre avis sur ma fa�on de faire une interface � un de mes modules.

    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
    // Classes du module
    struct A
    {
        void f(){}
    };
     
    struct B
    {
        void g(){}
    };
     
    // Classe interface
    class IAB
    {
        private:
            struct A& a;
            struct B& b;
     
        public:
            IAB(A& aa, B& bb) : a(aa), b(bb) {}
     
            void do_thing() { a.f(); }
            void do_another_thing() { b.g(); }
    };
     
    // Exemple d'utilisation
    int main()
    {
        A a;
        B b;
        IAB interface(a, b);
     
        interface.do_thing();
        interface.do_another_thing();
    }
    N'h�sitez � me dire si on peut mieux faire.
    Merci,

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par d�faut
    Salut

    Ce n'est pas mal, mais attention avec les r�f�rences membres ! Il y a des cas o� elles risquent de plus t'emb�ter qu'autre chose.

    Exemple :

    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
    #include <iostream>
     
    // Classes du module
    struct A
    {
    	A() : v(5) {}
    	void f(){ std::cout << v << std::endl; }
    	int v;
    };
     
    struct B
    {
        void g(){}
    };
     
    // Classe interface
    class IAB
    {
        private:
            struct A& a;
            struct B& b;
     
        public:
            IAB(A& aa, B& bb) : a(aa), b(bb) {}
     
            void do_thing() { a.f(); }
            void do_another_thing() { b.g(); }
    };
     
    // Exemple d'utilisation
    int main()
    {
    	A * pA = new A();
    	IAB interface2(*pA, B());
    	delete pA;
    	interface2.do_thing();
     
    	return 0;
    }
    Ce code affiche une valeur ind�termin�e car pA a �t� d�truit. Une des r�f�rences devient invalide, mais le code peut (c'est le cas quand j'ai test�) s'ex�cuter sans g�n�rer d'erreur.

    Tu peux aussi utiliser :
    - des copies des structs en question.
    - un pointeur membre
    - un boost::shared_ptr membre si tu fais une allocation dynamique

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    36
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 36
    Par d�faut
    Merci pour ta r�ponse.

    Tu peux aussi utiliser :
    - des copies des structs en question.
    - un pointeur membre
    - un boost::shared_ptr membre si tu fais une allocation dynamique
    Les classes du module sont un peu plus volumineuses que celles pr�sent�es (ce sont des classes compl�tes avec membres et fonctions membres, j'ai mis struct contenant une fonction pour simplifier), donc la premi�re suggestion ne convient pas.

    Je me m�fie des pointeurs nus, et je n'utilise pas boost pour ce projet...

    Ah oui, j'ai oubliais le return de main !

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    D�tails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par d�faut
    Salut,

    En g�n�ral on appelle plut�t �a une fa�ade (le design pattern).

    MAT.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    36
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 36
    Par d�faut
    Citation Envoy� par Mat007 Voir le message
    Salut,

    En g�n�ral on appelle plut�t �a une fa�ade (le design pattern).

    MAT.
    Oui, merci pour cette pr�cision.

    Pourrait-on m'�clairer sur les classes interface du type :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    class A
    {
        virtual void f()=0;
    };
    Ce sont des classes qu'il faut d�river pour d�finir une impl�mentation ?
    Un exemple d'utilisation m'aiderai certainement � mieux comprendre...

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    D�tails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294

Discussions similaires

  1. Les tutoriels en fran�ais sur les Interfaces Graphiques
    Par Jerome Briot dans le forum Interfaces Graphiques
    R�ponses: 0
    Dernier message: 04/09/2007, 21h44
  2. Question sur les interfaces (consturcteur property)
    Par BenoitM dans le forum VB.NET
    R�ponses: 4
    Dernier message: 01/03/2007, 15h49
  3. Interrogation sur les frames d'animation
    Par franc82 dans le forum D�veloppement 2D, 3D et Jeux
    R�ponses: 2
    Dernier message: 23/11/2006, 18h40
  4. [POO] question sur les interfaces
    Par root76 dans le forum D�buter avec Java
    R�ponses: 3
    Dernier message: 20/05/2006, 17h12
  5. Petite interrogation sur les z-index et div
    Par Delphy113 dans le forum Balisage (X)HTML et validation W3C
    R�ponses: 2
    Dernier message: 13/02/2006, 21h09

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