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
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
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.
Je voudrais que ce soit de manière dynamique, j'espère que tu vois ce que je veux dire !!!
pas a ma connaissance ...
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++.
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).
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 ???
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.
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 !!!
Un traitement une classe. Et pas une fonction.
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 .
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 !!!
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.
il est tard j'espere avoir ete clair moi aussi
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 }
Peut-on avoir plus de détails, merci ?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.
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.
Partager