Clonk
Messages postés278Date d'inscriptionmardi 22 janvier 2002StatutMembreDernière intervention29 août 2006
-
29 juil. 2004 à 17:26
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 2004
-
29 juil. 2004 à 19:39
Bonjour,
alors voilà, j'ai une classe "Champ" avec les attributs suivant :
private:
char * _nomchamp;
char * _explication;
char * _type;
char * _format;
char * _separator;
mon constructeur est comme ça :
Champ ::Champ(char * nom "", char * explic "", char * type = "", char * format = "", char * separator = "")
{
_explication = new char [128];
_explication = explic;
_nomchamp = new char [64];
_nomchamp = nom;
_type = new char [8];
_type = type;
_format = new char [32];
_format = format;
_separator = new char [64];
_separator = separator;
}
et quand je crée une instance, je fais ça :
Champ * ch10 = new Champ ("DATE_ECHEANCE", "D", "date", "dd/mm/yy", "/");
Bon, apparemment, tout est normal, et ça l'est, sauf pour une chose :
je sias pas pouruqoi, mais il en veut pas me mettre la valeur passée en paramètre dans ma dernière variable ( _separator ) et je vois toujours pas pouruqoi, il me met toujours les memes caractères bizarres.
Anacr0x
Messages postés515Date d'inscriptiondimanche 25 mai 2003StatutMembreDernière intervention27 avril 20062 29 juil. 2004 à 18:28
bon déja :
quand tu fait
_explication = new char [128];
tu place le pointeur sur une zone mémoire alloué
_explication = explic;
et la tu rédéplace encore une fois le pointeur sur une autre zone. Résultat : l'allocation n'a servi a rien
donc en premier lieu, abandonne tt ces new inutiles (ou alors fait un strcpy() apres l'allocation)
Ensuite, plutot que des char*, met des const char* si tu ne compte pas les modifier directementChamp ::Champ(const char * nom "", const char * explic "", const char * type = "", const char * format = "", const char * separator = "")
Ensuite, pour le dernier bug, désolé mais je ne vois pas, ca devrais marcher...