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
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : WIN APIRE : WIN API par racpp
Cliquez pour lire la suite par racpp WIN APIWIN API par omarino_007
Cliquez pour lire la suite par omarino_007
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
Comparez les prix

HTC Hero
Entre 550€ et 550€
|