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++Builder Discussion :

BCB C++ / Utilisation des méthodes privées


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 60
    Par défaut BCB C++ / Utilisation des méthodes privées
    Bonjour à tous,

    Sous Borland C++ v6, je souhaiterais savoir comment on utilise les méthodes "privées" c'est-à-dire celles qui génèrent le code d'erreur :

    E2247 '_fastcall ...' n'est pas accessible

    où ... représente la fonction en question.


    J'ai cru comprendre, d'après un ancien message de ce forum, qu'il faut utiliser la fonction Handle()... pour appeller cette méthode privée.

    Merci pour votre aide

    cordialement,

  2. #2
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 23
    Par défaut
    Bonjour,

    tu veux savoir comment utiliser des méthode privée car tu as déclaré des méthodes privées et tu obtient une erreur E2247, c'est bien ca ?

    À ce moment là je te conseille d'aller faire un tour sur la FAQ ou sur un cours de C++ où tout est super bien expliqué.

    d'après la FAQ : "Un membre déclaré private dans une classe ne peut être accédé que par les autres membres de cette même classe."

    Bonne journée

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 60
    Par défaut
    J'ai regardé dans la FAQ et sur les liens Internet mais c'est assez confus - pour un débutant!!
    Mon problème vient de l'utilisation de la méthode FocusCell pour le TGrid (message déjà posté) puisque je cherche à utiliser cette méthode qui est ... privée (enfin il semblerait...). Il doit bien y avoir un moyen d'utiliser cette fonction ??? J'ai par ailleurs essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TCustomGrid::FocusCell();
    ce qui donne le message d'erreur suivant :

    [C++ Erreur] Main.cpp(178): E2283 Utiliser . ou -> pour appeler '_fastcall TCustomGrid::FocusCell(int,int,bool)'

    avec aussi l'erreur 2247 précédente.
    Pourriez-vous me donner quelques pistes là dessus (le temps que je fouille sur Internet) et en particulier le code à inclure pour permettre son utilisation.

    Merci d'avance.

  4. #4
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 23
    Par défaut
    Bonjour,

    Ici je pense que c'est l'appel à la fonction qui est mal fait, d'où l'erreur.

    FocusCell est une méthode privée donc accessible uniquement depuis un membre de la classe TCustomGrid.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TCustomGrid::FocusCell();
    Or cet appel là ne respecte pas cette convention. Il faut que tu appelle la méthode depuis l'objet appartenant à la classe TCustomGrid.

    Donc le code devrait ressembler à ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CustomGrid1->FocusCell();
    où CustomGrid1 est le nom du composant que tu as posé sur ta fiche.

    Bon courage

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 60
    Par défaut
    Bonjour,

    Il semblerait que cela soit bien plus compliqué que cela puisque ce que vous proposez revient à faire comme si cette méthode privée était finalement publique.

    En examinant le fichier de définition de TCustomGrid, il apparait que la méthode FocusCell n'est pas privée mais protégée. Donc, deux solutions :

    - soit il faut chercher une méthode publique de TCustomGrid qui puisse appeller la méthode protégée;
    - soit il faut créer un héritage de cette classe et définir une fonction héritée - publique - qui puisse appeler la méthode protégée.

    cdt

Discussions similaires

  1. Réponses: 6
    Dernier message: 07/01/2009, 10h57
  2. Réponses: 14
    Dernier message: 08/04/2008, 16h42
  3. Réponses: 5
    Dernier message: 25/03/2008, 11h31
  4. Utilisation des méthodes de classe dans une autre classe
    Par ChriGoLioNaDor dans le forum C++
    Réponses: 4
    Dernier message: 28/07/2007, 15h10
  5. Réponses: 1
    Dernier message: 09/03/2006, 18h15

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