begin process at 2012 05 29 20:16:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

Probleme avec new() non crée pour certaine valeur...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probleme avec new() non crée pour certaine valeur...

vendredi 10 novembre 2006 à 17:45:21 | Probleme avec new() non crée pour certaine valeur...

jojomillenium

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;   

    LAYER()
    {
        this->num_quads=0;
        this->zstart = 3.0;
        this->hauteur = 2.0;
        this->h = 5.0;
        this->color.set(0, 0, 0, 1.0);
        this->visible=true;
        this->nom_cif = ";";
        this->nom_couche = ";";
    }
  
    void Del(int _num)
    {
        delete this->quad;
        this->num_quads=0;
        this->quad = new QUAD[_num];
    }

    ~LAYER()
    {  }
};

struct SYMBLAYER
{
    int numquads;
};

struct SYMBDS
{
    SYMBLAYER layer[13];
};

extern SYMBDS* SymboleDS;
extern LAYER* LLayer;

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.
vendredi 10 novembre 2006 à 17:57:15 | Re : Probleme avec new() non crée pour certaine valeur...

jojomillenium

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...

Merci,

Jojo
vendredi 10 novembre 2006 à 20:32:43 | Re : Probleme avec new() non crée pour certaine valeur...

Ombitious_Developper

Salut:

Ta classe Quad contient des pointeurs. Tu dois au moins définir un constructeur pour la classe Quad pour initialiser ces pointeurs.




vendredi 10 novembre 2006 à 20:39:51 | Re : Probleme avec new() non crée pour certaine valeur...

jojomillenium

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

vendredi 10 novembre 2006 à 20:43:18 | Re : Probleme avec new() non crée pour certaine valeur...

jojomillenium

le probleme ne survient que quand j'ai mes structure, je pourrai les remplacer par un tableaux a 3 dimensions!
mais comment faire?
J'ai essayé en declarant
int * TabSymb[13][1];


puis a l endroit ou je dois le créer j'ai mis:

TabSymb = new int[numds][13][1];
mais ca ne fonctionne pas!

vendredi 10 novembre 2006 à 20:54:32 | Re : Probleme avec new() non crée pour certaine valeur...

Ombitious_Developper

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 ();
}
vendredi 10 novembre 2006 à 20:54:48 | Re : Probleme avec new() non crée pour certaine valeur...

jojomillenium

Proleme à l'air resolue pour le moment en utilisant un tableau a 3 dim!


vendredi 10 novembre 2006 à 21:00:42 | Re : Probleme avec new() non crée pour certaine valeur...

Ombitious_Developper

Salut:

Espérant. Mais ça l'air de devenir de plus en plus compliqué ....
vendredi 10 novembre 2006 à 21:02:12 | Re : Probleme avec new() non crée pour certaine valeur...

jojomillenium

C'est effectivement un program assez complexe que je dois developper :S
Merci pour ton aide!

vendredi 10 novembre 2006 à 21:04:02 | Re : Probleme avec new() non crée pour certaine valeur...

Ombitious_Developper

Salut:

Juste un conseil: "Il ne faut pas compiquer les choses sinon on risque de s'ennuir"


Cette discussion est classée dans : int, num, llayer, layer, quad


Répondre à ce message

Sujets en rapport avec ce message

Convertion d'un double en hexadecimal (IEEE-754) [ par Cphil51 ] Salutation a tous.Je cherche a convertir un double en notation hexadécimale. J'ai deja essayé pour un float (plus simple car il prend que 32 bits), ce Gestion des long int [ par kiira31 ] Bonjour, Je code en ce moment la fonction printf. Je suis en train de gerer l affichage d'un nombre mais j'ai un souci pour gerer les long. Voici mo Mediane d'une suite de nombres [ par alexey27 ] Bonsoir je dois creer un programme qui affiche la mediane d'une suite de 10 nombres. Voici ce que j'ai fait : #include int main (){ const in Liste chainée de class dans une class... [ par jojomillenium ] Bonjour,Je fait un programme en API sans MFC,J'ai une class du genre:class VERTEX                            // Build our Vertex Class{public:    GLfl héritage c++ [ par mouadsa ] Bonsoir, Alors, j'ai créer un programme en c++ concernant une classe "compte" où je px calculer le versement et le retrait bien sur sous condition. Ma Aide sur les classes [ par mouadsa ] Bonsoir, J'ai un programmes en c++ où je dois créer une classe compte et puis créer n comptes (tableau dynamique), les afficher tous et saisir leurs p aide problem de compilation [ par pboscaiolo ] Bonjour j'ai un code avec le code suivant. quand je le compile ca plante, je crois qu'il s'agit d'un probleme d'allocation de memoire. le fichier duq Programme client sereur [ par bmoussa1989 ] Bonjour, j'ai un programme "client serveur" programmé en c++ (et avec la bibliothèque "MPI") et je veux faire une communication entre le client et le CList et win32 [ par jojomillenium ] Bonjour, ma question est simple, je defini mes classes telquel: // COORDONNEES class VERTEX                            // Build our Vertex Class { pub Nombres amis [ par Darksnakes ] Bonjour tout le monde,Voila je débute en C, et pour un tp j'ai besoin de faire un programme qui m'affiche la liste des nombres amis inférieur ou égale


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,420 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales