[C++] Polyphormisme

Polyphormisme [C++] - Programmation

Marsh Posté le 21-08-2001 à 07:23:57    

Voila: je fait un jeu, la base est une classe nomé Entite. De la je dérive mes autre entites (style EntitePensante).
 
Mais pour utiliser le polyphormisme...bien sa ch!e!!
 
je fait une décalration: Entite Entites[ENT_MAX];
marche po,j'ai une erreure quand je fait "Entites[x] = new EntitePensante;"
 
Je comprend pas trop...Où est mon erreur?

Reply

Marsh Posté le 21-08-2001 à 07:23:57   

Reply

Marsh Posté le 21-08-2001 à 07:59:16    

en C++, l'operateur new renvoie un pointeur, non?
Essayes donc de declarer plutot:
 
Entite * p_Entites[ENT_MAX];
 
p_Entites[x] = new EntitePensante(); -> il faut appeler le constructeur.
 
Mais peut être que j'ai mal compris ta question.
a+

Reply

Marsh Posté le 21-08-2001 à 09:31:38    

Bon je vien de faire comme tu ma dit,
mais mainteant les variable contenue dans les classe sont comrompue, comme si l'espace mémoire n'étaie pas alouer...
 
Au lieu d'avoir Entites[x].v2Pos.x = 100 j'ai quelquechose comme Entites[x].v2Pos.x = -1.034876E
 
??

Reply

Marsh Posté le 21-08-2001 à 09:37:39    

Haha, c'est ma faute  :crazy:  
 
J'avais mal foutu mon constructeur:D
 
et en passant merci!

 

[edtdd]--Message édité par Ventilo--[/edtdd]

Reply

Marsh Posté le 21-08-2001 à 11:09:40    

Euh...
 
Si t'as Entite * p_Entites[ENT_MAX];  
 
Entites[x].v2Pos.x n'a aucun sens !
Entites[x]->v2Pos.x a un sens !
 
Faudrait peut-être réviser les pointeurs ;)

Reply

Marsh Posté le 21-08-2001 à 20:11:47    

robUx4, c'est que j'ai écris vite ;)

Reply

Marsh Posté le 23-08-2001 à 01:54:47    

pour utiliser le mécanisme du polymorphisme il faut que au moins UNE de tes fonctions de la classe de base soit virtuelle.  
 
(ceci pour initialiser la vtbr, mais ca c'est une autre histoire)
 
ET SURTOUT N'OUBLIE PAS DE DECLARER TON DESTRUCTEUR VIRTUEL !!!!
 
(sinon c'est bugs, et fuite de mémoire en vue...)

Reply

Sujets relatifs:

Leave a Replay

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