Probleme avec new() non crée pour certaine valeur...
jojomillenium
Messages postés136Date d'inscriptionsamedi 1 mai 2004StatutMembreDernière intervention26 mai 2007
-
10 nov. 2006 à 17:45
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 2013
-
10 nov. 2006 à 21:04
Bonjour,
J'ai un probleme qui est apparu de je ne sais ou alors que ca marchais avant une certain modif que je vais expliquer.
J'ai des classes:
class VERTEX // Build our Vertex Class
{
public:
GLfloat pt[12]; // 3D coordinates x, y
// hauteur
};
// CLASS GROUPANT LES 4 SOMMETS DE LA FACE
class QUAD // Build our Quads Structure
{
public:
int num_pts;
bool visible;
int type;
GLdouble* bottom;
GLfloat* top;
VERTEX* vertex;
int symbole;
};
// CLASS D'UN COUCHE
class LAYER // Build our LAYER Class
{
public:
int num_quads;
bool visible, existe;
float hauteur, zstart, h, penetration;
char* nom_cif;
char* nom_couche;
vec4 color;
QUAD* quad;
et je fais ensuite:
LAYER* LLayer = new LAYER[13]();
SYMBDS* SymboleDS;
LAYER correspond a 13 couches que je veux ensuite dessiner en OpenGL,
SYMBDS correspond a un tableau qui me sert a enregistrer des symboles avec leur nombre de quad par couche lu dans un fichier (un fichier CIF pour les masque de circuit integre),
Le nombre total de quad a dessiner pour chaque LLayer est enregistré dans un tableau TabTest[13], je veux donc une fois que je sais combien de quads je dois créer par LLayer... bah les créer;
for(int c=0; c<13; c++)
{
int createquads = TabTest[c];
if(LLayer[c].num_quads>0) // condition au cas ou un fichier CIf avait deja été chargé et quon veut en voir un nouveau.
LLayer[c].Del(createquads);
else
LLayer[c].quad = new QUAD[createquads];
}
Bizzarement si createquads est supérieur a 35, mon nouveau QUAD n'est pas créé! new() me renvoie 0!
inferieur a 35 c'est bon!
Pourquoi? D ou peut venir le probleme?
Merci pour votre aide.
A voir également:
Probleme avec new() non crée pour certaine valeur...
jojomillenium
Messages postés136Date d'inscriptionsamedi 1 mai 2004StatutMembreDernière intervention26 mai 2007 10 nov. 2006 à 17:57
PS:
Si je met en commentaire les structures pour les symboles et tous ce qui concerne ces structure dans mon code... bah la mon new marche!
en tout ca new me créer sans prob des quads de taille 200000... j'ai pas testé la limite, mais en tout cas 2000000000 ne marche pas!
Une idée d'ou vient mon probleme et comment le resoudre? mes tableaux peuvent avoir une dimension enorme du style de 500000! bon apres mon OpenGL laggera grave mais bon...
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 10 nov. 2006 à 20:32
Salut:
Ta classe Quad contient des pointeurs. Tu dois au moins définir un constructeur pour la classe Quad pour initialiser ces pointeurs.
jojomillenium
Messages postés136Date d'inscriptionsamedi 1 mai 2004StatutMembreDernière intervention26 mai 2007 10 nov. 2006 à 20:39
il le sont en temps voulu, car ca depend encore des valeurs lu!
Une fois qu'il a lu une fois le fichier pour voir combien de quad
dessiner pour chaque couche, il relis le fichier, et des qu'il a un
objet a dessiner (rectangle, polygon, ...) il créé un nouvel objet
bottom par exemple avec le nombre de coordonnée correspondant a l
element a dessiner, et ainsi de suite.
bottom, top peuvent avoir une dimension de 12 comme de 80 dependant du nombre de sommet du polygon
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 10 nov. 2006 à 20:54
Salut:
Pour instancier un tableau d'objets il faut suivre cette démarche essaye de t'inspirer:
ClasseA * array;
array = new ClasseA [15];
for (int i=0; i<15; i++) {
array [i] = new ClasseA ();
}
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 10 nov. 2006 à 21:00
Salut:
Espérant. Mais ça l'air de devenir de plus en plus compliqué ....
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 10 nov. 2006 à 21:04
Salut:
Juste un conseil: "Il ne faut pas compiquer les choses sinon on risque de s'ennuir"