Accueil > Forum > > > > URGENT : Classes, Pointeurs, et fonctions membres !!
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
Livres en rapport
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Forum
ALGORITHMESALGORITHMES par whayoub
Cliquez pour lire la suite par whayoub
Logiciels
PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|