Fonction qui renvoi un pointeur sur un type objet

cs_tintin72 Messages postés 122 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 22 juillet 2006 - 16 juin 2005 à 18:42
cs_tintin72 Messages postés 122 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 22 juillet 2006 - 16 juin 2005 à 21:54
Bonjour,

j'aimerais savoir comment faire une fonction qui renvoi un pointeur sur un type objet.
En fait j'aimerais pouvoir faire ça :

class Cclasse
{
//variables membres

Cclasse* fnPt();
}
//Définition de la fonction
Cclasse* Cclasse::fnPt()
{
Cclasse *p;
//manipulation du pointeur...
return p;
}

//puis + loin dans le programme

Cclasse *pClasse

pClasse = fnPt();

j'ai fais des essaies mais pour l'instant le pointeur renvoyé vaut toujours zéro alors que dans la fonction ce n'est pas le cas.
Quelqu'un pourrait m'aider ?

Merci

Tintin 72

8 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
16 juin 2005 à 19:23
Comment tu initialises p dans fnPt? Si c'est avec new, le pointeur sera
encore valide à la sortie de la fonction, sinon (p pointe vers une
variable locale) il ne le sera plus. Par contre dans un aucun cas la
fonction ne devrait retourner 0. J'ai donc peur que p ne soit pas
initialisé du tout
0
cs_tintin72 Messages postés 122 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 22 juillet 2006
16 juin 2005 à 19:33
J'initialise p avec new c pour ça que je comprend pas pourquoi il renvoi 0.

Tintin 72
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
16 juin 2005 à 19:45
Et tu dis que p ne vaut pas 0 dans la méthode fnPt? La c'est très
grave, ca veut dire que la fonction ne renvoie pas la valeur qu'il y a
dans p.
0
cs_tintin72 Messages postés 122 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 22 juillet 2006
16 juin 2005 à 19:51
Ben oui je comprend pas. Peut être qq chose m'a echappé, mais j'ai j'ai bien vérifier.
Je pensais que peut être renvoyer un pointeur sur un type de classe ça se passait pas comme renvoyer un pointeur sur un type standard (int, char etc...) mais bon....
Mais c sûr que dans fnPt le pointeur est initialisé avec new et donc ne vaut pas 0.

Tintin 72
0

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

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
16 juin 2005 à 20:01
Histoire d'être sur, que t'affiche cet exemple?



#include



using namespace std;



class Cclasse

{

public:

Cclasse* fnPt();

};



Cclasse* Cclasse::fnPt()

{

return new Cclasse();

}



int main()

{

Cclasse o;

Cclasse *pClasse = o.fnPt();

cout << (int)pClasse << endl;

delete pClasse;

}
0
cs_tintin72 Messages postés 122 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 22 juillet 2006
16 juin 2005 à 20:09
4012048 une adresse effectivement.

Tintin 72
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
16 juin 2005 à 20:36
Bah alors c'est quoi qui a fait une fausse manip dans ton programme
0
cs_tintin72 Messages postés 122 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 22 juillet 2006
16 juin 2005 à 21:54
Ouaip, je vais tt revérifier. merci

Tintin 72
0
Rejoignez-nous