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 :

Accessibilité des methodes


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut Accessibilité des methodes
    Bonjour,

    je me posais la question suivante :

    est-il possible de limiter l'accès à des methodes membres d'une classe aux methodes partagées de cette même classe (non heritee)?

    pour illustrer :

    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 Test
    {
      public:
        Test();
        ~Test();
      public:
        methodeDInstance1();
        methodeDInstance2();
      private:
        static methodeDeClasse();
    };
     
     
    class TestFille : public Test
    {
      public:
        TestFille();
        ~TestFille();
      public:
        autreMethodeDInstanceFille();
      public:
        static autreMethodeDeClasseFille();
    };
    J'ai a peu pres ce schema la.

    Actuellement la methodedeclasse Mere appelle la methode d'instance 1.

    Or j'aimerais que l'on ne puisse pas appeller cette methode d'instance 1 ailleurs.

    Est ce possible ? merci

  2. #2
    Membre expérimenté Avatar de Ksempac
    Inscrit en
    Février 2007
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 165
    Par défaut
    Soit je ne comprends pas ta question
    soit tu as simplement besoin de definir la methode comme private (seule la classe mere y a acces) soit protected (acces autorisé aussi pour les classe filles)

  3. #3
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    salut,

    dans une methode de classe (static), je n'ai ni accès aux méthodes privées ou protected donc ta solution ne peux pas être appliquée ici.

    Mais l'idée est là.
    J'aimerai un mot clef qui reviendrait à private mais qui permette l'accès à la méthode depuis une methode static de la même classe.

    Mais je ne pense pas que ça existe...

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    D'après ce que tu nous dit, ton problème n'est pas la visibilité, mais le fait que tu essayes d'appeler une fonction membre non statique depuis une fonction membre statique. Pour passer de l'un à l'autre il faut une instance de la classe, comme pour toute fonction membre non statique.

  5. #5
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    Oui, mon instance est passée en parametre de la methode static. Je la récupère comme ça.

    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
    /**
     * @brief Point d'entree de la tache
     * @param tache Un pointeur vers la tache qui demarre
     * @return Code d'erreur
     */
    signed long
    Tache::mainTache(void* tache)
    {
      // On recupere la tache
      Tache* t = (Tache*)tache;
     
      unsigned long message;
     
      while( !t->estArretee() )
      {
        // Des qu'un message est recu
    	MPWaitOnQueue( t->getQueueEntree(), (void **)&message, NULL, NULL, kDurationForever );
     
    	// On le traite
    	t->recevoirMessage(message);
      }
     
      // On doit stopper le thread
      MPNotifyQueue(t->getQueueSortie(), (void*)0, NULL, NULL );
    }
    En fait cette methode static est une callback (impossible de faire une callback non static en Win32 ou ici en Carbon, sinon ça résoudrait mon probleme et ça serait même plus logique d'un point de vue conception).

    Le problème n'est pas comme faire pour que ça marche, puisque ça marche déjà, mais bien comment restreindre la visibilité de la methode "recevoirMessage()" à cette seule callback.

    Et la je crois que ce n'est pas possible. Je demande juste confirmation. qu'en pensez vous ?

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Il suffit de mettre recevoirMessage() privé, comme ça a déjà été dit. Si tu as un problème avec cette solution détaille un peu plus, parce que là je ne vois pas trop ce qui peut bloquer.

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 30/06/2006, 16h46
  2. [POO] sauvegarde d'objets et perte des methodes
    Par Matth_S dans le forum Langage
    Réponses: 3
    Dernier message: 23/12/2005, 15h47
  3. [Interfaces] Comment définir l'emplacement mémoire des methodes ?
    Par Clorish dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 16/12/2005, 14h45
  4. [IDE][D2005-2006] Ctrl + C et ordre des methodes
    Par eponette dans le forum EDI
    Réponses: 1
    Dernier message: 15/12/2005, 15h03
  5. Wait cursor et accessibilité des menus
    Par Depteam1 dans le forum MFC
    Réponses: 3
    Dernier message: 23/09/2004, 19h01

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