begin process at 2012 02 11 20:39:10
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

URGENT : Classes, Pointeurs, et fonctions membres !!


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

URGENT : Classes, Pointeurs, et fonctions membres !!

samedi 26 avril 2003 à 22:51:14 | URGENT : Classes, Pointeurs, et fonctions membres !!

guiguimac

bonsoir ... mon pbm avance mais là je cale grave !

j'ai une classe cA avec comme membres (pour l'instant tout en public) :
une string "NOM"
une fonction "print_name"

j'ai créé 3 objets de cette classe.

j'ai une classe cB avec 3 membres de type pointeur (p1, p2; p3) sur un objet de cA. lors de la construction d'un objet de cB, je fais pointer chaque membre sur un de mes trois objets de cA.

ensuite je peux faire ca depuis le constructeur de cB :

cout << p1->NOM;
// ou pour le même résultat , toujours dans le constructeur :
p1->print_nom();

par contre, si je fais les mêmes instructions depuis une nouvelle fonction membre de cB, j'ai des trucs assez farfelus ...


si c'est pas assez claire, je peux ballancer les sources !

merci d'avance à tous !!

guiguimac


dimanche 27 avril 2003 à 09:38:08 | Re : URGENT : Classes, Pointeurs, et fonctions membres !!

Beuss

bah balance les sources alors



-------------------------------
Réponse au message :
-------------------------------

> bonsoir ... mon pbm avance mais là je cale grave !
>
> j'ai une classe cA avec comme membres (pour l'instant tout en public) :
> une string "NOM"
> une fonction "print_name"
>
> j'ai créé 3 objets de cette classe.
>
> j'ai une classe cB avec 3 membres de type pointeur (p1, p2; p3) sur un objet de cA. lors de la construction d'un objet de cB, je fais pointer chaque membre sur un de mes trois objets de cA.
>
> ensuite je peux faire ca depuis le constructeur de cB :
>
> cout << p1->NOM;
> // ou pour le même résultat , toujours dans le constructeur :
> p1->print_nom();
>
> par contre, si je fais les mêmes instructions depuis une nouvelle fonction membre de cB, j'ai des trucs assez farfelus ...
>
>
> si c'est pas assez claire, je peux ballancer les sources !
>
> merci d'avance à tous !!
>
> guiguimac
>
>
>
dimanche 27 avril 2003 à 09:48:59 | Re : URGENT : Classes, Pointeurs, et fonctions membres !!

Beuss

Bon OK j'ai vu la source alors déjà premierement, il passe pas à la compil faut mettre \"describe\" sinon ca foire
Deuxiemement : tu pourrais pas donner des noms compréhensibles à tes classes, ca aiderait.
Troisiemement (c'est la que ca t'intéresse) : ton probleme vient du fait que tu passes tes trois classes par valeur, donc en fait ce ne sont pas les classes du main qui sont passées mais des copies de celles ci qui n'existent que dans le constructeur de Cze, pour résoudre ton probleme tu dois passer à ce constructeur des références sur des objets de la classe cSFSI, le prototype du constructeur devient donc :

cZE( cSFSI& VIVANTS, cSFSI& MORTS, cSFSI& HIBERNES);

et le constructeur (il change pas) :

cZE::cZE(cSFSI &VIVANTS, cSFSI &MORTS, cSFSI &HIBERNES)
{
pVIVANTS = &VIVANTS;
pMORTS = &MORTS;
pHIBERNES = &HIBERNES;

// dans le constructeur,
cout << "affichage depuis le constructeur de cZE : " << endl;
cout << pVIVANTS->Name << endl;
pVIVANTS->aprint_name();

}

voila c'est tout, bonne journée et arrete les noms style cZE et cSFSI...



-------------------------------
Réponse au message :
-------------------------------

> bonsoir ... mon pbm avance mais là je cale grave !
>
> j'ai une classe cA avec comme membres (pour l'instant tout en public) :
> une string "NOM"
> une fonction "print_name"
>
> j'ai créé 3 objets de cette classe.
>
> j'ai une classe cB avec 3 membres de type pointeur (p1, p2; p3) sur un objet de cA. lors de la construction d'un objet de cB, je fais pointer chaque membre sur un de mes trois objets de cA.
>
> ensuite je peux faire ca depuis le constructeur de cB :
>
> cout << p1->NOM;
> // ou pour le même résultat , toujours dans le constructeur :
> p1->print_nom();
>
> par contre, si je fais les mêmes instructions depuis une nouvelle fonction membre de cB, j'ai des trucs assez farfelus ...
>
>
> si c'est pas assez claire, je peux ballancer les sources !
>
> merci d'avance à tous !!
>
> guiguimac
>
>
>
dimanche 27 avril 2003 à 15:12:48 | Re : URGENT : Classes, Pointeurs, et fonctions membres !!

guiguimac


ca marche nickel !
merci bcp !

pour les nom en fait :
ZE = Zone d'Echange
SFSI = syst de fichier sequentiel indexé
... donc c'est parlant juste pour ceux de ma promo ... désolé.

je crois que j'avais bien fait n'importe quoi ... avec les &

est-ce que tu peux expliquer ce qu'il se passait à l'exe pour que depuis le constructeur ca passe, mas pas depuis la fonction membre ?


bonne fin de WE et encore merci !

-------------------------------
Réponse au message :
-------------------------------

> Bon OK j'ai vu la source alors déjà premierement, il passe pas à la compil faut mettre \"describe\" sinon ca foire
> Deuxiemement : tu pourrais pas donner des noms compréhensibles à tes classes, ca aiderait.
> Troisiemement (c'est la que ca t'intéresse) : ton probleme vient du fait que tu passes tes trois classes par valeur, donc en fait ce ne sont pas les classes du main qui sont passées mais des copies de celles ci qui n'existent que dans le constructeur de Cze, pour résoudre ton probleme tu dois passer à ce constructeur des références sur des objets de la classe cSFSI, le prototype du constructeur devient donc :
>
> cZE( cSFSI& VIVANTS, cSFSI& MORTS, cSFSI& HIBERNES);
>
> et le constructeur (il change pas) :
>
> cZE::cZE(cSFSI &VIVANTS, cSFSI &MORTS, cSFSI &HIBERNES)
> {
> pVIVANTS = &VIVANTS;
> pMORTS = &MORTS;
> pHIBERNES = &HIBERNES;
>
> // dans le constructeur,
> cout << "affichage depuis le constructeur de cZE : " << endl;
> cout << pVIVANTS->Name << endl;
> pVIVANTS->aprint_name();
>
> }
>
> voila c'est tout, bonne journée et arrete les noms style cZE et cSFSI...
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > bonsoir ... mon pbm avance mais là je cale grave !
> >
> > j'ai une classe cA avec comme membres (pour l'instant tout en public) :
> > une string "NOM"
> > une fonction "print_name"
> >
> > j'ai créé 3 objets de cette classe.
> >
> > j'ai une classe cB avec 3 membres de type pointeur (p1, p2; p3) sur un objet de cA. lors de la construction d'un objet de cB, je fais pointer chaque membre sur un de mes trois objets de cA.
> >
> > ensuite je peux faire ca depuis le constructeur de cB :
> >
> > cout << p1->NOM;
> > // ou pour le même résultat , toujours dans le constructeur :
> > p1->print_nom();
> >
> > par contre, si je fais les mêmes instructions depuis une nouvelle fonction membre de cB, j'ai des trucs assez farfelus ...
> >
> >
> > si c'est pas assez claire, je peux ballancer les sources !
> >
> > merci d'avance à tous !!
> >
> > guiguimac
> >
> >
> >
>
dimanche 27 avril 2003 à 15:34:08 | Re : URGENT : Classes, Pointeurs, et fonctions membres !!

Beuss

Ben en fait comme je l'ai dit vite fait tu passais à ton constructeurs des copies des objets du main qui n'existaient qu'à l'intérieur de ce constructeur, donc les adresse des pointeurs étaient valides. mais dès la fin du constructeurs, ces copies étaient détruites, donc les pointeurs pointaient à leur adresse mais il n'y avait plus personne... donc quand tu demandais le champ je sais plus quoi de ton pointeur dans describe, vu que ce pointeur pointait n'importe ou, son champ string n'existait pas réellement et donc ca correspondait à rien.
maintenant, avec les références, c'est comme si tu passais un pointeur sur les objets du main, qui eux, existent jusqu'à la fin du programme (dans le cas présent) donc les adresses sont toujours valides même à l'extérieur du constructeur.
Voila j'espère que c'est assez clair (mais je suis pas convaincu), en tout cas retient ca : dès que tu bosses avec des champs pointeurs dans une fonction extérieure à la classe passe des références (même en règle générale, ne passe jamais une instance de classe par cvaleur, préfère toujours les références ou les références constantes) ca va plus vite et ca évite ce genre d'erreur
dimanche 27 avril 2003 à 15:36:05 | Re : URGENT : Classes, Pointeurs, et fonctions membres !!

guiguimac


Merci bcp !


-------------------------------
Réponse au message :
-------------------------------

> Ben en fait comme je l'ai dit vite fait tu passais à ton constructeurs des copies des objets du main qui n'existaient qu'à l'intérieur de ce constructeur, donc les adresse des pointeurs étaient valides. mais dès la fin du constructeurs, ces copies étaient détruites, donc les pointeurs pointaient à leur adresse mais il n'y avait plus personne... donc quand tu demandais le champ je sais plus quoi de ton pointeur dans describe, vu que ce pointeur pointait n'importe ou, son champ string n'existait pas réellement et donc ca correspondait à rien.
> maintenant, avec les références, c'est comme si tu passais un pointeur sur les objets du main, qui eux, existent jusqu'à la fin du programme (dans le cas présent) donc les adresses sont toujours valides même à l'extérieur du constructeur.
> Voila j'espère que c'est assez clair (mais je suis pas convaincu), en tout cas retient ca : dès que tu bosses avec des champs pointeurs dans une fonction extérieure à la classe passe des références (même en règle générale, ne passe jamais une instance de classe par cvaleur, préfère toujours les références ou les références constantes) ca va plus vite et ca évite ce genre d'erreur


Cette discussion est classée dans : urgent, classe, classes, membres, cb


Répondre à ce message

Sujets en rapport avec ce message

Urgent...classe de manipulation de grands entiers [ par Orkblutt ] Salut,j'aimerai implementer une classe qui me permettrai de manipuler (+,-, /,*,%) des grands nombres (Nb>32bits) mais je ne sais pas du tout comment Constructeur sur un tableau de classes [ par Supo ] Lorsque je crée un tableau de classe, disons avecnomdelaclasse instance[10];et que j'ai un constructeur pour cette classe, comment je fait pour donner Problème "général" avec Direct3D, HELP ! [ par ProGamer ] J'ai commencé une application Direct3D. Elle était constituée d'une classe principale qui contenait l'objet LPDIRECT3D8. Tout marchait bien. Ensuite, classe et agregation... [ par Clonk ] bonjour,j'utilise plusieurs classes ayant des agregations (sous Borland).Disons en gros que si on a :class personne{private:int age;public:void affich liste chaînée et classes [ par yeager ] Bonjour!J'ai programmé pendant deux ans en C et actuellement j'étudie le C++. Pour moi une classe est l'équivalent d'une structure en plus évolué (hér pb classes avec tableau [ par JediMaster ] je voudrais crée une classe comme celle ci avec un tableau qui aurit sa taille qui varirais selon l'objet j' ai donc fait un construteurclass classe{ Attributs de classes [ par jsonor ] J'ai une question concernant les attributs de classes (donc C++).J'ai deux classes A et B, avec la classe A possédant un attribut de type B et la clas URGENT : Gros problèmes d'exceptions .. [ par monomanahune ] Monomanahune Bonjour,j'ai un enorme problème au niveau de la remontée des exceptions en C++.En effet, j'ai un programme qui gère des formes géométriqu CwinThread urgent [ par langedechu ] Bonjour,J ai un prob avce la classe CWinThread (je vais cracker si je n arrive pas le résoudre).Bon je m'explique : j ai creer une la classe : class c Ecrire des instances dans un fichier [ par Eclipz ] bonjour.voila, je debut en cpp et j'ai un léger problème.bon, mon petit prog comporte 3 classes. l 1re nommée "classe" contient un tableau instance de


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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,593 sec (4)

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