Char* capricieux....

Clonk Messages postés 278 Date d'inscription mardi 22 janvier 2002 Statut Membre Dernière intervention 29 août 2006 - 29 juil. 2004 à 17:26
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 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.

Quelqu'un sait-il pourquoi?

2 réponses

Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
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...
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
29 juil. 2004 à 19:39
Clonk > ta pas compris les pointeurs et ca fuis comme te l'a epliqué Anacr0x
et surtout n'oubli pas les const et utilise std::string en c++
0
Rejoignez-nous