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 :

Comment supprimer des fonctions d'une classe


Sujet :

MFC

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2003
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 54
    Points : 17
    Points
    17
    Par défaut Comment supprimer des fonctions d'une classe
    Bonjour à tous,

    J'aimerais savoir s'il est possible de supprimer les méthodes d'une classe que l'on n'utilise pas.

    Merci d'avance
    Cordialement
    hasna

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    je ne vois pas le probleme ,
    si c'est par le classwizard la suppression de la declaration dans la classe est faite par l'ide le code est à la charge du programmeur.


  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2003
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 54
    Points : 17
    Points
    17
    Par défaut
    Je voudrais que ce soit de manière dynamique, j'espère que tu vois ce que je veux dire !!!

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    pas a ma connaissance ...

  5. #5
    mat.M
    Invité(e)
    Par défaut
    Comme l'a répondu Farscape à juste titre je ne crois pas que cela soit possible voire carrément impossible ( concept de classe mutante ? ).
    D'abord préciser si c'est une classe générique C++ ou bien MFC.
    On ne peut supprimer méthodes et attributs d'une classe car une classe en mémoire possède un certain espace défini au lancement de l'application.
    Poser la question dans le forum C++.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 139
    Points : 65
    Points
    65
    Par défaut
    est ce une classe que tu cree toi meme ou une classe de MFC?
    Parceque si c'est une classe MFC, comme on te l'a deja dit, c'est pas necessaire si la methode en question n'est pas ajouter par le classwizard et d'ailleur meme si elle y est faudra que tu l'appelle toi meme pour qu'elle s'execute(la methode).

  7. #7
    Membre à l'essai
    Inscrit en
    Novembre 2003
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 54
    Points : 17
    Points
    17
    Par défaut
    Il s'agit d'une classe générique que j'ai créé moi même !!!
    Alors ai je une chance de réussir à faire ça ???

  8. #8
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 282
    Points : 11 036
    Points
    11 036
    Par défaut
    Ben ...tapes pas les fonctions dont tu n'as pas besoin si tu ne les veux pas.

    Si ta classe est générique au sens classe-template, alors le compilateur n'intègrera pas les fonctions qui ne sont pas appelées dans l'exécutable final..

    Sinon, il y a une question à se poser : pourquoi il y a autant de fonctions dans ta classe ?
    Est-ce vraiment nécessaire dans un soucis de cohérence de son interface publique (fonctions de l'interface publique de la classe qui forment un tout plus fonctions encapsulées (privées) nécessaires à la mise en oeuvre de l'interface publique) ? Si oui, c'est très bien et tu n'as pas de question à te poser.
    Si par contre tu as opté pour une approche propre aux langages non génériques avec un classe racine qui contient une multitude de fonctions et dont héritent toutes tes autres classes, alors tu as probablement un problème de design -- surtout que tu ressens qu'il y a trop de fonctions membre dans tes classes finales.

    PS: il est tout à fait possible d'avoir des classes "mutantes" avec l'idiome enveloppe-lettre. Par contre, l'interface publique de ces classes n'est pas censée muter.

  9. #9
    Membre à l'essai
    Inscrit en
    Novembre 2003
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 54
    Points : 17
    Points
    17
    Par défaut
    Mon application fait du traitement d'images et comme tu dois le savoir il existe une multitude de traitements qui peuvent prendre pas mal de place alors en fonction de ce que veux l'utilisateur, je voudrais pouvoir supprimer des fonctions ou même des classes du projet car l'appli finale doit pouvoir être embarquée, donc prendre le moins de place possible...

    J'espère avoir été claire !!!

  10. #10
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 282
    Points : 11 036
    Points
    11 036
    Par défaut
    Un traitement une classe. Et pas une fonction.

  11. #11
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    bonsoir ,
    peut que la solution de dll dynamiquement lue peut resoudre ton pb de place.
    une fonction ou un groupe de fonction par dll, tu distribus uniquement ce que tu as besoin .
    ta structure de classe ne bouge pas le code est lu à la demande et fonction de la configuration testable à partir d'un fichier d'options distribuer à l'install en fonctions des besoins.
    sur codeguru il y a un article sur un wrapper de classe pour la lecture dynamique de dll.
    http://www.codeguru.com/dll/DllStub.html
    autre post injection d'une dll
    http://codeguru.earthweb.com/dll/Loader.html

    a part cette idee je vois pas .

  12. #12
    Membre à l'essai
    Inscrit en
    Novembre 2003
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 54
    Points : 17
    Points
    17
    Par défaut
    Si on prend le cas où chaque traitement constitue une classe, comment ferait on pour retirer cette classe de l'application (le .h et .cpp) des fichiers présents ???

    Car si par exemple, on a une classe CTraitement1, par défaut, les fichiers Traitement1.h et Traitement1.cpp appartiennent au projet, si on retire alors cette classe (donc si on n'utilise pas ce type de traitement) et qu'on recompile le projet, ya problème car il ne trouve plus les 2 fichiers...

    J'espère être clair !!!

  13. #13
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    si j'ai bien compris ton pb est à l'origine un pb de place pour un projet embarque qui suivant une config donné n'utilise pas tout les traitements du prg .
    à mon avis tu n'a pas 36 solutions ou l'architecture de classe reste et fait partie du projet et le code rapporte à chaque traitement peut etre déporté dans une dll par exemple elle même distribuer uniquemement si il y a lieu .
    ou alors pourquoi pas la notion d'objet activex correspondant à un classe de traitement le projet ne contiendrai que les wrapper de classe et à l'install on ne distribue et enregistre que les activex nécessaires .
    ou encore plus simple si le projet le permet epuration à la compil en fonction de define placer dans le code et les options de compil
    tu fais sauter des pans de code à l'interieur des fonctions.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void CMyClass::SetFonction()
    {
    #ifndef _EPURER
    // traitement de base
    // .....
    #endif
    }
    il est tard j'espere avoir ete clair moi aussi

  14. #14
    mat.M
    Invité(e)
    Par défaut
    PS: il est tout à fait possible d'avoir des classes "mutantes" avec l'idiome enveloppe-lettre. Par contre, l'interface publique de ces classes n'est pas censée muter.
    Peut-on avoir plus de détails, merci ?

  15. #15
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 282
    Points : 11 036
    Points
    11 036
    Par défaut
    Mais euh. Dans le forum C++, il y moins d'une semaine (10 jours peut-etre) quelqu'un a demandé comme faire une classe qui change de signature/vtable/...
    J'ai donné des liens que je n'ai pas en mémoire -- un thread sur fclc++.

    Sinon, un des principes du C++ est de ne pas payer pour ce que l'on n'utilise pas. Autrement dit, une classe non utilisée par ailleurs dans le programme ne devrait pas être considérée au moment de l'édition des liens pour obtenir le programme final.

Discussions similaires

  1. Réponses: 8
    Dernier message: 16/02/2007, 16h55
  2. Réponses: 3
    Dernier message: 01/12/2006, 21h31
  3. Réponses: 7
    Dernier message: 16/05/2006, 16h40
  4. Réponses: 8
    Dernier message: 04/04/2006, 18h29

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