Pourquoi ca marche pas :'(

xboxut Messages postés 172 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 27 novembre 2009 - 8 avril 2004 à 17:51
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 - 10 avril 2004 à 21:51
salut j ai un probleme avec une fonction pour initialiser des particules,pouvez vous me dire pourquoi il ne marche pas et comment le faire marcher

#include "structure.cpp"

class particule{
public:
float x0;
float y0;
vector direction;
float x;
float y;
short time;
};

int particulegenerator(int X,int Y,particule *P[])
{
for(int i=0;i<sizeof(P)/sizeof(particule*);i++)
{
if(P[i]==NULL){          //la j ai un probleme le compil m affiche une erreur
P[i]=new particule();

}
//P[1]->x=100;
}
return 0;
}


cette fonction sert a initialiser les particules dans un tableau puis a remplacer les particules qui sont "mortes" donc qui sont supprimee par de nouvelles particules...(on teste si le pointeur est ok ou point)

5 réponses

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
9 avril 2004 à 09:11
particule est une classe. Par conséquent, il doit lui être associé un constructeur et un destructeur.

La commande "new" fait appel au constructeur de la classe qui se trouve juste derrière. Pour toi, new fait appel à "rien" et donc plantera lamentablement ...

//Fichier particule.h

class particule{
public:
float x0;
float y0;
vector direction;
float x;
float y;
short time;
particule();
particule(float x,float y);
virtual ~particule();
};



//Fichier particule.cpp

particule::particule()
{
 //initialise la particule avec des valeurs nulles partout
x0 =0;
y0=0;
[...]
}

particule::particule(float x, float y)
{
 //initialise la particule avec quelques valeurs
x0 =x;
y0=y;
[...]
}

virtual particule::~particule()
{
 // détruit les pointeurs présents dans ta classe

}



// Ton programme appelant
#include "particule.h"

int main(void)
{
 particule * p;
 particule * p1;
 p = new particule(); // particule vide
 p1 = new particule(300,200); // particule avec initialisation
 return 0;
}


Manu
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
9 avril 2004 à 12:37
il y a un pb au niveau de la fct de génération, il faut que tu ajoute un paramètre : le nombre d'élément du tableau, car tu ne peut pas faire siszeof(P)/sizeof(P[0]) pour l'obtenir, cela ne marche qu'avec des tableaux statiques.
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
9 avril 2004 à 12:39
econs -> chaque classe a un constructeur par défaut sans paramètres même si tu n'en met pas un explicitement, on peut donc faire new CParticule().
Par contre dè que l'on met un constructeur avec paramètres, le constructeur par défaut sans paramètre doit être mis explicitemenent.
0
xboxut Messages postés 172 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 27 novembre 2009 1
9 avril 2004 à 19:48
ok merci j ai resolu le probleme,maintenant mon code marche parfaitement et sans constructeur explixcite ;)

comment on fait pour voir le nombre d element pour un tableau dyna?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
10 avril 2004 à 21:51
on peut pas, c'est à toi de savoir ce que tu alloue ou passe en paramètre à une fonction
0
Rejoignez-nous