Allocation dynamique d'attributs

Allocation dynamique d'attributs

by Pierre Laurence Clayton -
Number of replies: 4

Bonjour,

Dans un programme, on déclare un pointeur sur un type Classe_x. La Classe_x a une sous-classe Classe_y. On demande à l'utilisateur s'il veut utiliser une instance de Classe_x ou de Classe_y. Ailleurs on a une Classe_A, à laquelle on veut initialiser un attribut de type : "choix de l'utilisateur" donc soit Classe_x soit Classe_y. Alors on a déclaré vector<Classe_x*> v comme attribut de Classe_A, et quand on veut mettre dans ce tableau un pointeur vers une instance de Classe_y, et faire des calculs avec son contenu pointé, les valeurs sont fausses. On a remarqué que si on déclare vector<Classe_y*> v, alors les résultats sont justes. Avez-vous une idée pour nous aider svp ? 

Merci beaucoup.



In reply to Pierre Laurence Clayton

Re: Allocation dynamique d'attributs

by Josué Antoine Maechling -

Alors quand vous dites que les valeurs sont fausses vous avez déjà essayé d'afficher le contenu du pointeur pour voir si c'est effectivement des Classe_y ? Je suppose que non sinon vous auriez certainement vu que ce sont des Classe_x si les calculs ne fonctionnent effectivement pas.

N'essaieriez-vous pas de créer les pointeurs en faisant new Classe_x(pointeur vers classe_y) ?

Avez-vous seulement essayé de créer un code tout simple retraçant ce que vous dites pour vous rendre compte de l'erreur ?

In reply to Josué Antoine Maechling

Re: Allocation dynamique d'attributs

by Pierre Laurence Clayton -

Nous avons testé avec un petit programme, et on comprend bien que le pointeur ne pointe pas vers notre instance en tant que Classe_y mais en tant que Classe_x. On ne comprend pas pourquoi, et comment résoudre ceci ? 

On a essayé de faire Classe_x* ptr = new Classe_y, mais cela ne résout pas notre problème...

In reply to Pierre Laurence Clayton

Re: Allocation dynamique d'attributs

by Josué Antoine Maechling -
ça dépend de ce que vous souhaitez faire exactement mais je ne peux que vous recommander de lire le cours sur la copie polymorphique, il semble que vous avez peut-être raté des informations utiles (cours polymorphisme 2)

Edit : ok super du coup vous avez utilisé la copie poly ou ce n'était pas ce que vous vouliez faire ?