begin process at 2012 05 28 17:02:58
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

besoin d'eclaircissement sur les classes et pointeurs


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

besoin d'eclaircissement sur les classes et pointeurs

vendredi 14 novembre 2003 à 15:57:13 | besoin d'eclaircissement sur les classes et pointeurs

oliarn

Membre Club

bonjour,


je fais un programme en c++ pour la fac e tj'aimerai savoir comment manipuler mes classes dans mon programmes.

voila une fonction par exemple message esst une classe qui contient un pointeur vers un message suivant pour chainee les messages. cette fonction doit permettre de lire le ieme message de cette liste .


int utilisateur :: lire(int numero, message* liste)
{
ptrmsg tmp;
int indice=1;
tmp = new message;

tmp=liste;

while(indice!=numero)
{
/* Gestion des errreurs, ex: le message que l?on souhaite effacer n?existe pas */
if (tmp==NULL)
{

return 0;
else {
/*on avance au prochain message et on incremente l'indice*/
tmp=tmp->suivant;
indice++;
}

}


cout<<"expediteur:" ;
cout<<tmp.expediteur<<endl;
cout<<"sujet: ";
cout<<tmp.sujet<<endl;
cout<<"date: ";
cout<<tmp.date<<endl;
cout<<"texte: ";
cout<<tmp.texte<<endl;

return 1;

}


vendredi 14 novembre 2003 à 16:08:20 | Re : besoin d'eclaircissement sur les classes et pointeurs

ymca2003

l'objet message créé est inutile. De plus, comme tu réaffecte une nouvelle valeur à tmp juste après, l'adresse de l'objet créé est perdue et donc du ne pourras pas l'utiliser ni détruir l'objet.
tmp = new message;
tmp=liste;

ensuite, pour accéder aux champs de tmp, il faut utiliser -> (comme tu le fais dans le while) au niveau des cout
cout<<"expediteur:" ;
cout<<tmp->expediteur<<endl;
cout<<"sujet: ";
cout<<tmp->sujet<<endl;
cout<<"date: ";
cout<<tmp->date<<endl;
cout<<"texte: ";
cout<<tmp->texte<<endl;
vendredi 14 novembre 2003 à 16:11:53 | Re : besoin d'eclaircissement sur les classes et pointeurs

oliarn

Membre Club


donc le new et le delete ne serve a rien ?

en fait quand j'a iun pointeur de classe pour acceder a la valeur de ses arguments il faut que je fasse nom->argument ? je pensais que ca em renvoyais le pointeur vers l'argument.

autrement si je dis que tmp es tun message ca ne marcherait pas ?
vendredi 14 novembre 2003 à 16:19:30 | Re : besoin d'eclaircissement sur les classes et pointeurs

oliarn

Membre Club

je sais pas si t uauras le courage de lire ce code mais est ce que les pointeurs sont bien utilises et est ce la facon la plus simple de proceder ?




ptrutil charger_utilisateur(const char* fichier) { // fonction qui va nous servir a instancier
// une classe utilisateur a partir d'un fichier.
ptrutil util;
string mot;
ptrmsg tmp;

ifstream Entree("fichier") // on ouvre le fichier grace a un flux .

tmp=util->anc_mess; // on pointe tmp sur le debut
// de la liste des anciens messages.
Entree>>mot;

if ((mot!="$"))

{
cout << "fichier non valide (utilisateur)" << endl;

return NULL;
exit(0);
}
Entree>>mot;
util->pass=mot;
Entree>>mot;
util->num_ip=mot;
Entree>>mot;

if (mot!="$")
{
cout << "fichier non valide (utilisateur)" << endl; //procedure d'erreur de fichier
Entree.close();
return NULL;

}
else
{



While (mot !="?") //tant que l'on ne rencontre pas se fichier on charge les anciens messages

{
Entree>>mot;
tmp->expediteur=mot; //chargement caracteristique message
Entree>>mot;
tmp->destinataire;
Entree>>mot;
tmp->lu=mot;
Entree>>mot;
tmp->sujet=mot;
Entree>>mot;
tmp->date=mot;

while(mot!="#")
{

Entree>>mot; // chargement du texte tant que l'on ne tombe
tmp->text=tmp.text+mot; // pas sur le signe de fin de message
}

tmp=tmp->suivant; // on passe au chargement du prochain message
// si on est pas arrive a la fin de la liste
// des anciens messages.
}




tmp=util->nouv_mess; // on va maintenant charger les nouveaux messages

while (Entree>>mot) // tant que l'on rencontre des caracteres
// c qu'il reste des nouveaux messages a charger
{
Entree>>mot;


tmp.expediteur=mot;
Entree>>mot;
tmp->destinataire; // meme procedure que pour les anciens messages.
Entree>>mot;
tmp->lu=mot;
Entree>>mot;
tmp->sujet=mot;
Entree>>mot;
tmp->date=mot;

while(mot!="#")
{

Entree>>mot;
tmp->text=tmp->text+mot;
}
tmp=tmp->suivant;
}
}
}
vendredi 14 novembre 2003 à 23:29:59 | Re : besoin d'eclaircissement sur les classes et pointeurs

ymca2003

Pour savoir si les pointeurs sont bien utilisés (syntaxiquement parlant) tu compile et tu regarde le résultat.
Si tmp est un poiteur sur un objet de type message et que tufait tmp.txt, tua auras une erreur de compilation.

Sinon, quant tu déclare un pointeur sur un objet, avant de l'utiliser, il FAUT l'initialiser. Pour cela 2 façon :
- A partir d'un objet déjà existant (début de liste par exemple)
- En créant un nouvel objet dynamiquement avec new.

C'est pour ca que dans le premier exemple le new est inutile car tu initialise tmp avec le début de la liste

Dans le deuxième exemple, le pointeur "util" est utilisé avant d'être initialisé.

Enfin, pour comparer des chaînes de caractères, c'est pas
if(mot != "$") mais if(strcmp(mot, "$") != 0)
dimanche 16 novembre 2003 à 12:09:56 | Re : besoin d'eclaircissement sur les classes et pointeurs

oliarn

Membre Club
Merci, j'ai fait les modifs et c plus klr dans ma tete maintenant.


Cette discussion est classée dans : message, cout, tmp, indice, endl


Répondre à ce message

Sujets en rapport avec ce message

Pas De Solution??? [ par PsyCaDi ] Bonjour,Voilà, je veux faire un truc tout con avec des tableaux mais ça ne marche pas. Quelqu'un peut-il me dire ce qui n'est pas bon (sauf moi, ça je probleme sur une classe [ par NerOcrO ] Voici mon code :#include #include class Chanson //classe Chanson{ public: int Duree; char TypeDeFichier[3], Auteur[50], Titre[50], Interprete[50 que des boucles. [ par pratix ] Salut à tous.Je post mon prg cherchenbr modifié (voir sujet précédent ''int main" ).Programme compilé avec visual C++ 06. ( zéro erreur )j'ai essay caractere speciaux a afficher en boucle [ par ranouf ] #include void main (){ cout cout cout}comment faire pour automatiser cette tache ?j'aurai besoin de savoir a koi correspon tableau de structures type pointeur [ par chocho ] Merci d'avoir répondu à ma demande d'aide.Voici la source sur laquelle je coince:#include#include#define maxlist 10int indicecourant;struct abonne fichier exel (lecture et ecriture) [ par rissorg ] Bonjour a tous!j'essaye de faire un programme qui doit lire differents fichiers exel ,comparer les donnees lu au donnees contenu dans un fichier text bind bought bought lier [ par JoebarGlut ] Salut, j'ai un piti problem de bind, kelkun peut il m'eclairer ?j'explik : (c'est un client qui se metamorphose en serveur ou en client suivant ce qu' Aide : Patch anti sasser.b [ par juki_webmaster ] Bonjour,Je me suis remis au developpement c++ sous dev cpp 4.Je realise un patch contre sasser.b.worm, en suivant l'indication ;http://www.symantec.co Allocation dynamiques [ par romain42 ] Bonjour tout le monde.Je vous explique mon problème:j'ai fait une struct voila le codetypedef struct Match::but{ char nombuteur[20],prenom[20],surnom[ Vérification fonction d'envoi RS232 [ par VolaiL ] J'ai à réaliser un programme permettant de communiquer avec une machine depuis un PC.voici ce que j'ai fait :void Envoyer(char *message){ DCB car_com;


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,952 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales