Problème de Queue FIFO

Problème de Queue FIFO - C++ - Programmation

Marsh Posté le 04-12-2006 à 10:39:18    

Salut ,
 
J´ai un problème avec ma sdt::string Queue (FIFO) car je la remplie d´une chaine de caractère, avec ceci
 

Code :
  1. char path_to_multimedia_object[1024];
  2. Queue.Push((string)&path_to_multimedia_object[0]);


mais je recois ceci dans la Queue (avec TRACE Methode)
 

Code :
  1. Queue:: Push this path to the Stack = ÍÍÍÍM![ÍÍÍÍÍÍÍÍÍÍÍÍ3


qu´est ce que cela veut dire ou qu´est ce que je fais mal.
 
Merci bien

Reply

Marsh Posté le 04-12-2006 à 10:39:18   

Reply

Marsh Posté le 04-12-2006 à 11:23:10    

Salut,
 
Il faut commencer par utiliser string au lieu de char[] et de faire un cast C (ça peut pas marcher correctement ça).
Ensuite, faudrait voir la signature de queue.push() pour en comprendre un peu plus si le fait de changer en string ne résout pas le problème.

Reply

Marsh Posté le 04-12-2006 à 11:51:35    

voici ma push

Code :
  1. BOOL Push(const Type & item) // Add element at the end of queue
  2. {
  3. _queue_item<Type> *next=new _queue_item<Type> (item);
  4. if (first==NULL)
  5. {
  6.   last=first=next;
  7.    LOG1(0,ERROR_LOG_I,Queue:: Push this path to the Stack = %s,last);
  8. }
  9. else
  10. {
  11.   last->next=next;
  12.   last=next;
  13.   LOG1(0,ERROR_LOG_I,Queue:: Push this path to the Stack = %s,last);
  14. }
  15. return TRUE;
  16. };


et j´utilise Queue<std::string> Queue;
 

Reply

Marsh Posté le 04-12-2006 à 12:22:52    

Dans ce cas, tu fais doublement mal:
* utilise string au lieu de char[] comme précisé plus haut,
* apprends un peu les pointeurs; t'attend une référence, et tu envoies l'adresse du premier pointeur de char casté en string de façon C.
 
C'est un peu trop de l'alchimie pour fonctionner correctement.

Reply

Marsh Posté le 04-12-2006 à 12:34:03    

(string)&path_to_multimedia_object[0]
 
je sais pas si je dois rire ou pleurer

Reply

Marsh Posté le 04-12-2006 à 12:37:48    

Pleurer de rire? [petrus avec les points d'interrogations]

Reply

Marsh Posté le 04-12-2006 à 13:53:18    

Désolé de poser des questions "BETES", mais si je ne les pose pas je vais mourrir FENEANT et IDIOT ce que je ne veux pas, là au moins au paradis j´aurais peut être une chance d´être INTELLIGENT & SAGE !!!!  

Reply

Marsh Posté le 04-12-2006 à 14:27:51    

std::queue<std::string> :o

Reply

Marsh Posté le 04-12-2006 à 18:32:20    

alino a écrit :

Désolé de poser des questions "BETES", mais si je ne les pose pas je vais mourrir FENEANT et IDIOT ce que je ne veux pas, là au moins au paradis j´aurais peut être une chance d´être INTELLIGENT & SAGE !!!!


Il n'est pas question d'être "bête" comme tu dis, mais de se renseigner sur ce que l'on veut faire. Là, tu ne sais clairement pas comment marche un cast ni comment fonctionne les pointeurs.
Quand tu veux cumuler des opérations que tu ne connais pas, commence par les apprendre séparément. Là, tu as de grave reste de C, y compris au niveau de la formation des chaînes de caractère (cf ta macro ou fonction LOG1). Ensuite, y'a déjà une classe queue dans la STL comme l'a fait remarquer Taz.
L'idée n'était pas tant de t'insulter que de mettre le doigt "où ça fait mal". Si tu prends les remarques aussi mal, les forums ne sont pas le meilleur endroit...

Reply

Marsh Posté le 05-12-2006 à 08:43:11    

Merci bien et je compte apprendre de mes erreurs et mieux faire la prochaine comme tu l´as si bien dit lorsque j´aborde un thème nouveau apprendre d´abord la dessus ca c est vrai. Mais je ne savais pas qu´il existait une classe queue dans la STL par exemple c´est la réponse de Taz qui m´a ouvert l´oeil de ce côté la.
 
Merci pour vos conseils...

Reply

Marsh Posté le 05-12-2006 à 08:43:11   

Reply

Marsh Posté le 05-12-2006 à 09:19:34    

nul n'est censé ignoré la loi :o

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed