Probleme avec pointeur urilisant string

Orlyn Messages postés 5 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 17 février 2008 - 16 févr. 2008 à 01:51
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 - 17 févr. 2008 à 15:02
Bonjour,

Je viens de finir mon prog de gestion de liste d'attente avec des structures comme ceci :

struct Maillon {
int numero;
Maillon *suivant;
};

struct FileAttente {
Maillon *tete;
Maillon *queue;
};
On ajoute une personne en queue, on retire une personne en tete...

Maintenant je dois faire le meme prog mais avec des noms pour les personnes au lieu de numéros.

Donc remplacer "int numero" par "string nom" et mettre "using namespace std;" et enlever les .h des include .

J'ai tout bien modifié mais il me met 2 erreurs lors de la compilation :

error C2679: binary '>>' : no operator defined which takes a right-hand operand of type 'class std::basic_string<char,struct std::char_traits<char="">,class std::allocator<char> >' (or there is no a
cceptable conversion)

error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'class std::basic_string<char,struct std::char_traits<char="">,class std::allocator<char> >' (or there is no a
cceptable conversion)

Les erreurs sont respectivement pour les lignes :
(nm est un pointeur de type Maillon)
cin>>(*nm).nom;

cout<<endl<<"La personne en tete de file est monsieur "<<(*(file.tete)).nom<<"."<<endl;


J'ai essayé de remplacer string par char (mon prog bien modifié pour les noms). Et la... magie! Plus d'erreurs! Ca doit donc venir de string.
Cela veut-il dire qu'on ne peut pas utiliser de string avec les pointeurs? Ou alors qu'il faut utiliser string differemment de char par exemple, ce que pense?

Si quelqu'un avait une idée du probleme ca m'aiderait beaucoup ;).

Merci d'avance.</char></char,struct></char></char,struct>

5 réponses

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
16 févr. 2008 à 17:32
Salut,

En un cpluspluseux meilleur que moi, tu peux convertir en char * au dernier moment :

(*(file.tete)).nom.c_str()

On peut aussi utiliser la syntaxe suivante (->) pour accèder aux attributs d'une structure quand on a un pointeur dessus :

file.tete->nom.c_str()

On ne dirait pas que l'on peut afficher des chaînes directement.
0
nickydaquick Messages postés 416 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 19 décembre 2013 3
16 févr. 2008 à 19:16
Salut ,

#include
#include <string>

using namespace std;
void main()
{
    string* s = new string;
    cin>>*s;
    cout<<"La chaine entree est : "<<*s<<endl;
    delete s;
}

un exemple d'utilisation de tes pointeurs strings, verifies bien ton code surtout les includes  , ou poste les et on te trouvera l'erreur ( ou l'omission).

je suis heureux de faire partie d'une grande famille ...!
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
16 févr. 2008 à 21:17
La seule façon dont j'ai pu recréer l'erreur c'est en n'incluant pas le header "string"
C++ (@++)<!--
0
Orlyn Messages postés 5 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 17 février 2008
17 févr. 2008 à 11:31
Desolé pour le texte ma foutu, je sais pas comment marche ce forum, je pige pas...
Le pointeur de string c'est une bonne idée, merci.

Mais en fait, en compilant avec dev-c++ au lieu de visual studio ca marche direct.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
17 févr. 2008 à 15:02
Un pointeur t'obligera à faire un appel à new et à delete en plus.
Déjà qu'utiliser des string, c'est loin d'être ce qu'il y a de plus rapide, pourquoi alourdir davantage le code avec des allocations dynamiques en plus.
D'autant plus que, ici, c'est complètement inutile.

C++ (@++)<!--
0
Rejoignez-nous