[C++ débutant] Où mettre des méthodes non membres ?

Où mettre des méthodes non membres ? [C++ débutant] - C++ - Programmation

Marsh Posté le 04-03-2006 à 19:44:11    


Bonjour,
 
C'est mon dernier topic concernant ce fameux projet C++, j'ai quasiment tout fini, et maintenant j'ai réalisé que j'ai des méthodes qui ne sont pas spécialement des méthodes de classe, mais plutot des fonctions.  
 
Voici le plan de mes Classes:
http://orgasm.free.fr/hfr/planc++.jpg
 
(et le sujet du projet, si ça vous intéresse)
http://orgasm.free.fr/hfr/sujetc++.jpg
 
J'ai par exemple des fonctions de déplacement de d'objets / groupes / formes (=même chose). Ce ne sont que des méthodes "de manipulation", et pas des méthodes spécifiques à une classe en particulier. Ou mettre ces fonctions ? Dans le main() ?  :heink:  
 
Faire une class "manip" et les mettre la dedans ?
Enfin, j'ai un dernier souci avec les couleurs dans la console à résoudre, si ça vous dit:
http://forum.hardware.fr/hardwaref [...] 5841-1.htm
 
 :hello: et merci de m'avoir supporté tout au long de ce projet :sweat:  :D  
 


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
Reply

Marsh Posté le 04-03-2006 à 19:44:11   

Reply

Marsh Posté le 04-03-2006 à 22:01:25    

méthode non-membre, concept intéressant

Reply

Marsh Posté le 04-03-2006 à 22:05:44    

virtuelle ou pas ? ;)

Reply

Marsh Posté le 04-03-2006 à 22:23:36    

bah tu fous tes fonctions en static et puis voila


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 04-03-2006 à 23:19:50    

ou des fonctions libres
 
tout dans des namespace surtout

Reply

Marsh Posté le 05-03-2006 à 01:53:48    

Taz a écrit :

méthode non-membre, concept intéressant


Des fonctions, quoi :o
 

++fab a écrit :

virtuelle ou pas ? ;)


Non !
 

Harkonnen a écrit :

bah tu fous tes fonctions en static et puis voila


Dans le main() ?
 

Taz a écrit :

ou des fonctions libres
tout dans des namespace surtout


Pkoi namespace ?
 
 :jap:  


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
Reply

Marsh Posté le 05-03-2006 à 03:16:44    

ParadoX a écrit :


 
Dans le main() ?


mais non pas dans le main ! depuis quand on définit des fonctions dans d'autres fonctions, bougre d'ane ? [:mlc]
tu es en C++ là, donc il n'existe pas de méthodes non membres. dans ce cas là, tu te créé une classe "fourre tout" dans laquelle tu définis toutes les méthodes dont tu estimes qu'elles n'ont pas de place ailleurs, et tu les déclares en static, ça t'évitera d'instancier cette classe à chaque fois que tu voudras accéder à une de ces fonctions. mais dans ce cas là, il faudra que chaque fonction utilises ses propres données, tu oublies les données membres.
ou alors comme dit Taz, tu te créé des fonctions libres (fonction non rattachée à un objet)
 

ParadoX a écrit :


Pkoi namespace ?


pour éviter les collisions de noms

Message cité 3 fois
Message édité par Harkonnen le 05-03-2006 à 03:17:19

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 05-03-2006 à 09:56:12    

Harkonnen a écrit :

mais non pas dans le main ! depuis quand on définit des fonctions dans d'autres fonctions, bougre d'ane ? [:mlc]


Ben en Pascal c'est possible et assez déroutant.


Message édité par slash33 le 05-03-2006 à 09:56:45
Reply

Marsh Posté le 05-03-2006 à 10:24:23    

En c++ avec les extensions GNU de gcc (c'est surement pas le seul), c'est possible aussi.

Reply

Marsh Posté le 05-03-2006 à 11:01:17    

Harkonnen a écrit :

tu es en C++ là, donc il n'existe pas de méthodes non membres. dans ce cas là, tu te créé une classe "fourre tout" dans laquelle tu définis toutes les méthodes dont tu estimes qu'elles n'ont pas de place ailleurs, et tu les déclares en static


 
Ça va pas :o On ne va pas créer une classe vide juste pour mettre des méthodes statiques dedans ... Déjà que les gens on tendance à tout mettre en méthode alors que de simples fonctions auraient parfaitement suffit, c'est pas le moment de conseiller de transformer de simples fonctions en méthodes juste pour le plaisir de faire de l'objet.
 
http://www.gotw.ca/gotw/084.htm

Reply

Marsh Posté le 05-03-2006 à 11:01:17   

Reply

Marsh Posté le 05-03-2006 à 11:24:09    

Kristoph a écrit :

Ça va pas :o On ne va pas créer une classe vide juste pour mettre des méthodes statiques dedans ...


Ben ça s'appelle une classe utilitaire dans la terminologie adhoc  :o

Reply

Marsh Posté le 05-03-2006 à 11:50:22    

Harkonnen a écrit :

mais non pas dans le main ! depuis quand on définit des fonctions dans d'autres fonctions, bougre d'ane ? [:mlc]
tu es en C++ là, donc il n'existe pas de méthodes non membres. dans ce cas là, tu te créé une classe "fourre tout" dans laquelle tu définis toutes les méthodes dont tu estimes qu'elles n'ont pas de place ailleurs, et tu les déclares en static, ça t'évitera d'instancier cette classe à chaque fois que tu voudras accéder à une de ces fonctions. mais dans ce cas là, il faudra que chaque fonction utilises ses propres données, tu oublies les données membres.
ou alors comme dit Taz, tu te créé des fonctions libres (fonction non rattachée à un objet)
 
 
pour éviter les collisions de noms


 
Merci pour le "bougre d'âne" :sweat:  
On a tous débuté un jour, hein [:spamafote]
 
Merci qd meme :)


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
Reply

Marsh Posté le 05-03-2006 à 11:52:21    

autant directement utiliser un namespace, c'est prévu pour ...

Reply

Marsh Posté le 05-03-2006 à 12:07:04    


pas besoin de classe alors ?
 
Juste un fichier à inclure, ds lequel j'aurais défini mon namespace et mes fonctions ?


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
Reply

Marsh Posté le 05-03-2006 à 12:16:53    

ParadoX a écrit :

pas besoin de classe alors ?
 
Juste un fichier à inclure, ds lequel j'aurais défini mon namespace et mes fonctions ?


Oui, c'est très bien comme ça :)

Reply

Marsh Posté le 05-03-2006 à 12:18:16    

C'est fait, et ça marche :)
Merci :)
 
Par contre, le static, c'est plus la peine, j'imagine ?
De toutes façons, ça passait pas (peut etre parce que j'ai 2 fonctions qui portent le même nom, mais à signature différente)
'fin bref :)


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
Reply

Marsh Posté le 05-03-2006 à 12:27:18    

Kristoph a écrit :

Ça va pas :o On ne va pas créer une classe vide juste pour mettre des méthodes statiques dedans ... Déjà que les gens on tendance à tout mettre en méthode alors que de simples fonctions auraient parfaitement suffit, c'est pas le moment de conseiller de transformer de simples fonctions en méthodes juste pour le plaisir de faire de l'objet.
 
http://www.gotw.ca/gotw/084.htm


 
100% d'accord, mais je ne vois aucun rapport avec le gotw que tu cites :/

Reply

Marsh Posté le 05-03-2006 à 12:30:19    

++fab a écrit :

100% d'accord, mais je ne vois aucun rapport avec le gotw que tu cites :/


Rapport à la volonté de tout mettre en tant que méthode membre dans des classes, même s'il faut faire des contorsions pour y arriver. Mais je suis d'accord que ce n'est pas le meilleurs exemple possible.

Reply

Marsh Posté le 05-03-2006 à 12:33:46    

OK, j'avais mal lu ton post, et j'étais resté sur les fonctions membres statiques :|


Message édité par ++fab le 05-03-2006 à 12:35:31
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed