Instanciation d'objet dont le type est connu au runtime - C++ - Programmation
Marsh Posté le 10-06-2002 à 10:07:57
en quel langage ?
si c'est Java, je sais pas
si c'est en C++, tu peux parfaitement instancier un objet directement sur le tas
par exemple, pour instancier un objet de la classe CDialog (avec MFC):
CDialog *dlg = new CDialog();
Marsh Posté le 10-06-2002 à 10:13:14
C en C++,
mais le pb avec ce que je veux faire c que le type
est saisi par l'utilisateur ( sous la forme d'une chaîne de caractères ) donc au moment de coder il est inconnu
Marsh Posté le 10-06-2002 à 10:23:26
En C++Builder il doit y avoir moyen en utilisant ce que Borland à rajouter à cause de Delphi (vu qu'en Delphi je crois qu'y a moyen)
Marsh Posté le 10-06-2002 à 10:28:38
Cool je travail avec Builder
Peux-tu me dire ce que c'est ?
Marsh Posté le 10-06-2002 à 10:37:56
HA bon !? Moi j'aurai affirmé qu'y a pas moyen !
Je vois pas bien comment on pourrait ajouter (ou modifier) du code compilé.
Marsh Posté le 10-06-2002 à 10:53:24
Je connais qq un qui l'a fait en java
et ça marche
mais en C++ c autre chose
Marsh Posté le 10-06-2002 à 11:26:21
Non en fait y a peut-être pas moyen... On sait modifier les propriétés published des objets dérivant de TComponent, ou récupérer un pointeur vers un contrôle d'une Form en passant son nom en tant que chaîne, mais c'est tout, on sait pas le créer comme ça
Marsh Posté le 10-06-2002 à 11:59:01
Y a un moyen, mais c pas top dans l'esprit de la conception objet.
Tu fait un classe abstraite dont vont dériver tout tes types.
Tu fais un membre(de classe) pour chaque classe dérivée qui détient le type de la classe. Tu fais une méthode de classe de ta classe mère qui prend un argument le type désiré et qui te renvoit un pointeur. Ensuite dans cette fonction tu teste le type et tu appel le bon constructeur. Tu renvoie ensuite l'adresse de l'objet créé.
Marsh Posté le 10-06-2002 à 14:25:28
c plus ou moins ce que je fais mais c po bien
par rapport aux concepts objets
Marsh Posté le 10-06-2002 à 16:58:06
Ben ouai, mais y a pas d'autres solutions à ma connaissance.
Marsh Posté le 10-06-2002 à 17:17:41
Fais une recherche sur "Factory Method" et "Design Pattern". Je crois que c'est ce que tu recherches.
Marsh Posté le 10-06-2002 à 17:20:08
C'est tout a fait possible en Delphi et probablement en Builder aussi...
Déjà expliqué dans un topic ici y a qqs jours (fait une recherche sur le nom de la fonction je crois que j'ai détaillé un peu).
Va voir du côté de RegisterClass
Marsh Posté le 10-06-2002 à 17:20:47
mince je l'avais oublié ce truc là
Marsh Posté le 10-06-2002 à 17:21:16
antp a écrit a écrit : Non en fait y a peut-être pas moyen... On sait modifier les propriétés published des objets dérivant de TComponent, ou récupérer un pointeur vers un contrôle d'une Form en passant son nom en tant que chaîne, mais c'est tout, on sait pas le créer comme ça |
si
Marsh Posté le 10-06-2002 à 17:22:01
ho ça va hein
tu me le fais remarquer par icq, pas besoin de le répéter 2x sur le forum
Marsh Posté le 10-06-2002 à 17:22:56
antp a écrit a écrit : ho ça va hein tu me le fais remarquer par icq, pas besoin de le répéter 2x sur le forum |
Marsh Posté le 10-06-2002 à 17:24:03
http://forum.hardware.fr/forum2.ph [...] h=&subcat=
Voila le topic en question
Marsh Posté le 10-06-2002 à 10:03:34
bonjour
je voudrais savoir si cela est possible d'instancier un
objet dont le type est connu à l'éxecution.
Par exemple, j'ais une variable chaîne de caractères qui s'appelle "type", et je voudrais faire qq chose du style
new type.
merci d'avance pour votre aide
a+