Salut
Comme je trouve que c'est un sujet hyper intéressant, je le relance!
Alors, en C++, pour pac, il y a typeid en effet, dans je ne sais plus quel header, mais ça prend trop de mémoire ... il ne faut l'utiliser qu'en dernier recours.
Sinon, en général, si l'on doit faire quelque chose du genre si c'est tel animal, appeler telle fonction toussa, hé bien c'est qu'il y a un problème de conception, sauf exceptions ... Hé oui, pensez au polymorphisme ...
C'est à dire que chaque animal ait une fonction du même signature qui lui permette de se déplacer...
Dans le pire des cas, il y a dynamic_cast, un petit peu couteux en mémoire hélas, mais c'est déjà çà.
Mais la solution de if machin is CAnimal ou bien if(machin instanceof(CAnimal)) .... je trouve ça moyen, car pour chaque nouvelle class, il faudra retoucher au code ...
ENfin en C++ grâce aux templates on peut toujours faire quelque chose de pas trop mal ... bien que résoudre ça par la hiérarchie de classes est mieux.
__________________________
Be C++ Mon Blog (C++, Intelligence Artificielle, Prolog)
C'est à dire que chaque animal ait une fonction du même signature qui lui permette de se déplacer...[/quote]
Alp, en C++, imagines tu as une classe mère Animal, avec des classes filles, ça m'em...rait de devoir faire une méthode voler virtuelle pour Animal et devoir la surcharger dans les Classes poisson et oiseau, idem pour une méthode nager, et devoir la surcharger pour des classes d'animaux qui ne nagent pas.
Il est bien de ne déclarer une méthode qu'au niveau de la classe ou on peut s'en servir pour ne pas avoir à déclarer trop de méthodes qui ne servent à rien dans des classes mères qui pourraient devenir trop lourdes assez rapidement.
[quote]Mais la solution de if machin is CAnimal ou bien if(machin instanceof(CAnimal)) .... je trouve ça moyen, car pour chaque nouvelle class, il faudra retoucher au code ...[/quote]
Non si on a bien pensé nos classes et bien codé. :8):
__________________________
Lisez la [url=http://www.forum.moteurprog.com/bavardages/forum-msg-22857-1.htm]charte[/url], pensez à regarder la [url=http://www.forum.moteurprog.com/FAQ/FAQ.php]FAQ[/url], les [url=http://www.moteurprog.com/Tutoriaux/]tutoriaux[/url], l'[url=http://www.moteurprog.com/Annuaire/]annuaire[/url] et faites une [url=http://www.forum.moteurprog.com/Rechercher/Index.php]recherche[/url] dans les forums.
N'oubliez pas le Tag [b][Résolu][/b][img]http://www.ressources.moteurprog.com//Ressources/Images/Forum/Resolu.gif[/img].
Initiez-vous à Delphi avec [url=http://www.turboexplorer.com/delphi]Turbo Delphi Explorer[/url], au C ou au C++ avec [url=http://www.codeblocks.org]Code::Blocks[/url] et C# avec [url=http://www.microsoft.com/france/msdn/vstudio/express/vcsharp/telechargez.mspx]Visual C# 2005 Express[/url].
ERREUR BBCODE SUR CE MESSAGE : - La valeur de la balise "quote" n'est pas correcte !
Bah, si, dans tous les cas tu devras rajouter quelque chose pour chaque class que tu voudras prendre en compte ...
Pour le polymorphisme j'parlais pas d'une méthode voler ou nager mais d'une méthode "bouger", ... dans la class Oiseau, tu surcharges en appelant dans bouger la méthode voler ... dans poisson la méthode nager, etc ...
Au pire, tu règles ça par un polymorphisme templates, si tu te soucies de ta mémoire.
Mais en tout cas, les if machin is Oiseau ... c'est pas trop la meilleure solution car niveau mémoire ça doit prendre un max ...
__________________________
Be C++ Mon Blog (C++, Intelligence Artificielle, Prolog)
Tu es le plus fort, tu as raison, on clôt le débat.
__________________________
Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
N'oubliez pas le Tag [Résolu].