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

MFC Discussion :

Atteindre une fonction de la classe mere depuis une classe


Sujet :

MFC

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 43
    Points : 24
    Points
    24
    Par défaut Atteindre une fonction de la classe mere depuis une classe
    Bonsoir,

    Voila j'ai un petit probleme : je voudrai acceder a une fonction SetTableau() que j'ai réalisé dans la classe mere : CTest_mfcDlg depuis ma classe CBtButton.

    Je n'arrive pas à réaliser ca donc je viens vous demander de l'aide !!
    Si il y a besoin de plus d'info n'hesité pas a demander

    Ah oui je travail sous visual c++ 6.0 mfc et dialogbased
    Merci encore et a bientot
    Hadrien

  2. #2
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    Bonjour.

    tu peux passer au bouton un pointeur vers son parent .

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 43
    Points : 24
    Points
    24
    Par défaut
    Oui j'ai récupéré le parent dans le bouton avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CWnd *pParent;
    pParent=GetParent();
    Mais le probleme c'est que je trouve pas les fonction que j'ai réalisé dans la classe mere
    Est ce que je merde quelque part :
    donc si vous avez des idées d'ou viens mon erreur se serais genial
    Abientot

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Points : 343
    Points
    343
    Par défaut
    lorsque tu creet l'appel a ta classe bouton :
    tu lui donne un paramtere du type pointeur qui pointe sur ta classe tableau
    et ensuite dans ton constructeur de ta classe bouton : tu initialise une données membre pour manipuler le tableau via le pointeur
    c'est basique

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 43
    Points : 24
    Points
    24
    Par défaut
    Lol j'en suis concient mais je ne comprenais pas tres bien :s
    je vais essayer ta methode et je te tien au courant
    merci

  6. #6
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Points : 96
    Points
    96
    Par défaut
    A la place de çà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CWnd *pParent; 
    pParent=GetParent();
    si tu mets ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CMaClassedeBase *pParent;   // en la faisant dériver de CWnd
    pParent=(CMaClassedeBase*)GetParent();
    Est-ce que ça marche mieux ?
    sinon
    dans ta classe de base tu peux essayer de déclarer en static la fonction
    dont tu veux te servir dans ta classe dérivée et l'appeler ensuite avec l'opérateur de résolution de portée.
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class CBase{
       //
       public:
           static void maFonc();
       //
    };
    et tu appelles ta fonction de la manière suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
         //
         CBase::maFonc()
         //
    Est-ce que ça marche mieux ?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 43
    Points : 24
    Points
    24
    Par défaut
    Arg, je n'arrive toujours pas a faire ta methode.
    CBtPicture est une classe dérivée de CButton et d'autre pas CGridCtrl m_Grid n'est pas un pointeur donc je ne peux pas passer de pointeur a ma classe CBtPicture
    Il n'existe pas de methode plus simple d'obtenir les methodes de ma classe princpale CTest_mfcDlg ???

    Merci encore.

    Denn's : ta premiere methode ne peux pas fonctionner car CTest_mfcDlg n'existe pas dans ma classe, j'y avais deja pensé sinon dans ta 2eme methode je ne comprends pas la phrase :
    dans ta classe de base tu peux essayer de déclarer en static la fonction
    dont tu veux te servir dans ta classe dérivée et l'appeler ensuite avec l'opérateur de résolution de portée.
    Ca ve dire quoi l'opérateur de résolution de portée ??

  8. #8
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Points : 96
    Points
    96
    Par défaut
    c'est l'opérateur '::' qui permet d'éxecuter une fonction déclarée dans une classe lorqu'aucun objet n'est instancié à partir de celle-ci. C'est pour ça qu'il faut la déclarer en 'static'.
    ex:

    class CUneClasse{
    public:
    static int addition(int a,int b);
    //
    };
    tu peux utiliser la fonction addition n'importe où ailleurs sans être obligé d'instancier un objet de type CUneClasse en faisant:
    //
    int result=CUneClasse::adition(3,8);
    //
    Essaie de taper 'CWinApp::' ou 'CWnd::' pour voir ce que ça t'affiche.
    Mais ce que je comprends pas, tu parles de classe mère, si tu dérives une classe de cette classe mère, la classe dérivée doit avoir les mêmes fonctions que la classe mère ? Non ?[/code]

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 43
    Points : 24
    Points
    24
    Par défaut
    Haaa ca a falli fonctioné, tu as raison avec les :: mais il me dis
    C2653: 'CTest_mfcDlg' : is not a class or namespace name
    C2065: 'addition' : undeclared identifier
    Par contre non je ne derive pas ma classe CBtButton de ma
    classe mere mais de la classe CButton.
    donc je dois faire #include "CTest_mfcDlg.h" dans mon entete "CBtButton.h". mais cela genere des erreurs :/
    Donc je ne vois pas du tout comment acceder a mes fonction de ma classe principale CTest_mfcDlg.
    Je dois passer par des bidouilles mais je n'aime pas ca et je suis limité ... si tu as d'autres explications je suis preneur

  10. #10
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Points : 96
    Points
    96
    Par défaut
    Essaie de nous montrer la partie (essentielle) de code si elle est pas trop importante en mentionnant les fichiers d'en-têtes et sources si ils sont différents. On doit pas être loin...

Discussions similaires

  1. appelé une classe depuis une fonction
    Par gotcha5832 dans le forum Langage
    Réponses: 4
    Dernier message: 15/04/2011, 12h07
  2. Réponses: 5
    Dernier message: 23/02/2009, 09h21
  3. [AS2] Atteindre attribut d'une classe depuis une fonction interne a la classe
    Par Demco dans le forum ActionScript 1 & ActionScript 2
    Réponses: 6
    Dernier message: 18/04/2006, 21h03
  4. Retourner un tableau depuis une fonction
    Par obalais dans le forum C++
    Réponses: 2
    Dernier message: 20/10/2005, 16h49
  5. Ecrire dans un tableau html depuis une fonction js ?
    Par botanica dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/10/2005, 12h48

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