Plusieurs types dans un vector - C++ - Programmation
Marsh Posté le 18-03-2004 à 09:57:47
Il va falloir utiliser le polymorphisme.
Fait heriter les types qui vont etre stockées dans ton vector d'une même classe mêre. Ensuite stocke dans ton vecteur des Pointeurs vers cette classe mêre.
Code :
|
Marsh Posté le 18-03-2004 à 10:08:17
Merci bien, bon voila ce que j'ai fait (oulha c'est pas beau). (je précise que ce n'est qu'un code de test et pas un code final)
Code :
|
Marsh Posté le 18-03-2004 à 10:18:18
faut declarer tes operator[] virtuelle sino tu n'arrivera à rien.
Marsh Posté le 18-03-2004 à 10:38:47
ReplyMarsh Posté le 18-03-2004 à 10:42:51
Joel F a écrit : |
Mais si on le fait pas, ça va être la boucherie quand Taz va arriver sur ce topic
Marsh Posté le 18-03-2004 à 10:44:11
deja que ^^.
Bon : Ummon,
dynamic_cast et static_cast sont tes amis
Marsh Posté le 18-03-2004 à 10:56:47
zavez pas l impression qu'il manque un template qq part la
FK
Marsh Posté le 18-03-2004 à 11:00:20
pas template !, après on ne plus faire ca : vector<BaseIndex*>
Marsh Posté le 18-03-2004 à 11:01:29
Joel F a écrit : deja que ^^. |
Oui mais même, je pense que ça modelisation est à revoir en fait. Les cast c'est mal et les cast à la C c'est très mal
Dans ce cas précis, le typage est faible et tu utilises un cast. Donc, cela suppose que d'une manière ou d'une autre, tu sais quel est le type de données stocké dans ton vecteur non ? un moyen d'eviter le cast est donc de donner au compilateur cette information.
Code :
|
Deviens alors :
Code :
|
Enfin, vous voyez l'idée.
Marsh Posté le 18-03-2004 à 11:05:39
Joel F a écrit : faut declarer tes operator[] virtuelle sino tu n'arrivera à rien. |
oui c'était un oubli, c'est corrigé
Marsh Posté le 18-03-2004 à 11:07:05
Kristoph a écrit : |
M'etonne qu'on l'ait pas encore vu d'ailleurs.
A+,
Marsh Posté le 18-03-2004 à 11:09:54
>Kristoph
ok, mais les records vont dans des tables, dans mon cas je n'ai qu'un seul type de table pour n'importe quel type d'enregistrement (record) alors qu'avec ta facon de faire il faudrait faire un type pour chaque table. Mais je suis d'accord qu'a un moment ou à un autre je dois savoir quelle est la structure d'une table.
Marsh Posté le 18-03-2004 à 11:13:15
Ummon a écrit : pas template !, après on ne plus faire ca : vector<BaseIndex*> |
bah pas si tu fais un template qui derive de cette classe...
Code :
|
Marsh Posté le 18-03-2004 à 11:15:36
marche pas "Type<char>" et "Type<int>" sont des types différents
Marsh Posté le 18-03-2004 à 11:23:08
ReplyMarsh Posté le 18-03-2004 à 11:30:29
>Joel F
T'as une explication ou un lien concernant les models stp ?
Marsh Posté le 18-03-2004 à 11:35:36
ok 2 sec :
http://www.devarticles.com/c/a/Cpl [...] Templates/
sinon ici même par mes soins :
http://forum.hardware.fr/forum2.ph [...] 0&subcat=0
Marsh Posté le 18-03-2004 à 11:40:48
>frenchkiss
bon ok, ca fonctionne, j'ai rien mais voila, comment résoudre ce problème :
Code :
|
Marsh Posté le 18-03-2004 à 11:48:36
bah la deja a vu d'nez ton ->set va foire ,
vu qu'il nest pas declarer dans TBase
Marsh Posté le 18-03-2004 à 12:01:41
Si tu veux faire du typage dynamique comme ça, il y a le Python qui est plus adapté que le C++. Le C++ étant un langage fortement typé ( sisi c'est vrai ), tant que tu soustype comme ça une partie de tes données ça va être le bordel.
Code :
|
ou
Code :
|
Marsh Posté le 18-03-2004 à 12:07:31
>Kristoph
Merci pour ta réponse.
Pas de Python pour moi ! Ruby forever !!!
Marsh Posté le 18-03-2004 à 12:16:37
Ummon a écrit : >Kristoph |
On va pas commencer un troll sur les langages ici. J'ai beaucoup aimé ce guide sur le Ruby qui montrait comment la syntaxe de celui-ci s'approchait du langage naturel :
Code :
|
Sauf que ca cafouillait des le 3eme example
Code :
|
Et après je suis arrivé sur la partie qui décrivais les differents symboles a mettre devant les variables et ça m'a rappelé le perl et le PHP alors j'ai fermé le guide et j'ai decidé de ne pas faire de Ruby
Marsh Posté le 18-03-2004 à 12:23:05
en fait Ruby introduit (ca existe dans d'autres langages) la notion de bloc.
Code :
|
Marsh Posté le 18-03-2004 à 12:26:12
Y'en a pas mille de différents symboles (4 sauf erreur), juste pour donner un exemple, je trouve que c'est très pratique d'obliger les variables membre de commencer par un @, ça clarifie le code.
Personnellement je m'oblige à mettre 'this->' devant mes variables membre en c++ (et 'this.' en java).
Marsh Posté le 18-03-2004 à 12:39:18
je pense plus qu'il y a une erreur de conception a la base dans ce probleme. ptet que si tu disais ce que tu voulais faire.
Marsh Posté le 18-03-2004 à 12:40:48
Ummon a écrit : Y'en a pas mille de différents symboles (4 sauf erreur), juste pour donner un exemple, je trouve que c'est très pratique d'obliger les variables membre de commencer par un @, ça clarifie le code. |
Ce n'est pas l'obligation de prefixer les variables membres mais le fait d'utiliser un symbole pour ça. En Python, tu es obligé de mettre 'self.' pour acceder aux variables membres. Pas besoin de recycler un symbole n'ayant rien à voir pour faire ça.
Ruby me rappelle trop le perl et le php à cause de decisions de ce genre, c'est tout
Marsh Posté le 18-03-2004 à 12:44:43
Mon but est de reproduire plusieurs table (comme les tables d'une base de donnés) en mémoire avec la possibilité de créer des index pour une recherche rapide.
Il sera possible (mais je n'ai fait que des tests pour l'instant) d'ajouter, de supprimer, de modifier et de consulter les enregistrements d'une table.
Marsh Posté le 18-03-2004 à 13:21:14
Ummon a écrit : |
Marsh Posté le 18-03-2004 à 13:23:20
comme je dis toujours: si t'as besoin d'utiliser la notation hongroise ou de ratouter un prefixe à tes identifiants, c'est que t'es déjà perdu.
Marsh Posté le 18-03-2004 à 14:05:19
Personnellement je trouve ca bien d'imposer des règles surtout si elles facilite la lecture. par exemple en Ruby les noms des classes doivent commencer par une majuscule.
De plus l'utilisation de symbole (@ pour les données membres en Ruby), si elle n'est pas abusive, permet une lecture et une compréhension du code plus rapide.
Marsh Posté le 18-03-2004 à 14:15:47
comme taz : si tu es pas capable de savoir qui et quoi, t mal.
mes classes c'est du array pas du Array, mes membres c du data , pas de mData, data_ ou lpstrData ...
Marsh Posté le 18-03-2004 à 09:53:00
Je voudrai simplement mettre des types différents dans un même vector, voici un exemple des types :
Quelqu'un a une solution ?