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 :

comment masquer des traitements internes


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Info Industrielle
    Inscrit en
    Juillet 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Info Industrielle
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2012
    Messages : 15
    Par défaut comment masquer des traitements internes
    Bonjour,

    J'essaye de masquer des traitements en héritant d'une classe par 'private' :

    soit un fichier classA.h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class ClassA_private;
     
    class ClassA : private ClassA_private {
     
        public:
            ClassA();
        };
    et un fichier ClassA.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
     
    #include "classA.h"
     
    //-----
    typedef struct {
        int var;
        } TypeInterne;
     
    class ClassA_private {
        public:
            TypeInterne ti;
        public:
            internalInit() { 
                ti.var = 5;
                }
        };
     
    //-----
    ClassA::ClassA() {
     
        internalInit();
        }
    Voilà l'esprit de la chose, mais le compilateur n'en veut pas. Il considère qu'il n'en sait pas assez sur ClassA_private.

    Commet s'y prendre ?

    Merci.

  2. #2
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Bonjour

    Pour hériter, il faut connaître la définition de la classe.
    Je pense que l'idiome pimpl (private implementation) correspond à tes besoins :http://en.wikibooks.org/wiki/C%2B%2B...on_.28pImpl.29

  3. #3
    Membre averti
    Homme Profil pro
    Info Industrielle
    Inscrit en
    Juillet 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Info Industrielle
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2012
    Messages : 15
    Par défaut
    Bien, cela me convient.
    Merci.

  4. #4
    Membre averti
    Homme Profil pro
    Info Industrielle
    Inscrit en
    Juillet 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Info Industrielle
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2012
    Messages : 15
    Par défaut
    Je précise qu'il est nécessaire de définir un constructeur de copie du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class ClassA {
        private:
            ClassAImpl* _impl;
     
            ClassA(
                ClassA& other) {
     
                _impl = new( ClassAImpl();
                _impl->xx = other.xx;
                ...
                }
        };
    pour éviter un crash lors d'un return ou de code local, car les même pointeurs seraient partagés par plusieurs instances;
    Voir : http://en.wikipedia.org/wiki/Copy_constructor

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/11/2009, 11h36
  2. Comment lancer des traitements php avec du Javascript?
    Par Evenmor dans le forum Général JavaScript
    Réponses: 24
    Dernier message: 23/06/2008, 17h38
  3. [VBA]comment masquer des fichiers excel au démarrage d'une macro?
    Par alex.a dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/04/2007, 15h33
  4. Réponses: 1
    Dernier message: 05/11/2004, 17h15
  5. [SWT] Comment faire des fenetres internes ??????
    Par sebounator dans le forum SWT/JFace
    Réponses: 5
    Dernier message: 22/04/2004, 01h12

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