SnOOpss
Messages postés571Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013 17 juil. 2005 à 19:42
Effectivement avec le new ca marche :)
Par contre du coup j'ai un nouveau probleme !
J'ai defini en global ID3_Frame * myFrame = new ID3_Frame(); en tete du fichier vu que je bosse tout le temps avec le meme.
Dans ma fonction je me retrouve avec
void ecriture(.....) {
myFrame = myTag.Find ( GetFrame(choix) );
// en fait le probleme est la : si myframe == NULL je suis obligé de
reappeller le constructeur pour une nouvelle variable ID3_Frame, je ne
peux pas travailler avec la meme ????
if (myFrame == NULL) {
ID3_Frame * myFrame2 = new ID3_Frame();
myFrame2->Clear();
myFrame2->SetID(GetFrame(choix));
myTag.AddFrame(myFrame2);
myFrame2 = myTag.Find ( GetFrame(choix) );
[......]
delete myFrame2[];
}
}
Ya pas un moyen pour rappeller le constructeur ?? Parceque ca me fait
peur d avoir a me creer une fonction pour "renouveler" la variable dans
la classe.
Par contre je commence a trouver mon code de plus en plus crado et si
c'est vraiment trop le bordel je me demande si il ne vaudrait pas mieux
la definir en local plutot que en global meme si je doit la repasser en
parametre a toutes mes fonctions !!!
SnOOpss
Messages postés571Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013 17 juil. 2005 à 21:03
Ben en fait myTag.Find (
GetFrame(choix) ) renvoi soit une frame (si elle existe) soit NULL mais
apparrement elle doit faire plus que ca vu quelle deviens inutilisable
juste apres !!
En fait si elle n'existe pas je la crée, enfin j essaye il me faudrait
la deleter et la refaire mais c'est moche comme c'est pas possible
surtout pour une variable globale.
Et j utilise
les pointeur car c'est cette technique qu'ils on utilisé dans l'
exemple de la doc de la lib (apres verifications c'est plutot rare en
effet) , y a une raison pour ne pas preferer les pointeurs dans
cet exemples ??
Vous n’avez pas trouvé la réponse que vous recherchez ?
SnOOpss
Messages postés571Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013 17 juil. 2005 à 21:32
myFrame = myTag.Find ( GetFrame(choix) );
if (myFrame == NULL) {
myFrame->Clear();
myFrame->SetID(GetFrame(choix));
myTag.AddFrame(myFrame);
myFrame = myTag.Find ( GetFrame(choix) );
}
Vla le code voulu qui plante a clear() si frame == NULL.
En fait je peux modifier si la frame existe deja ( en changeant == NULL
en !NULL) mais si il me faut la creer frame NULL meme la commande
myFrame->Clear(); me plante tout "La memoire ne peut pas etre read"
SnOOpss
Messages postés571Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013 24 juil. 2005 à 13:08
C bon j'ai mit une variable locale plutot que globale et donc j'ai plus
de liberté mais par contre je sais pas si je doit mettre le new.
ID3_Frame *myFrame;
marche tres bien par contre si je fait
delete myFrame;
je me retrouve avec un message d'erreur a la fain de ma boucle main();
Il vaut mieux mettre new ou ne pas utliser delete (a certain endroit je
suis obligé d'utiliser new donc le delete y est obligatoirement
mais quand ca marche sans new je sais pas ) ???