 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
dnanar Guest
|
Posted: Thu Apr 13, 2006 8:06 pm Post subject: pointeur et reference |
|
|
Bonjour,
J' essaye d' utiliser les références pour retourner un pointeur. En
fait, j' ai une classe qui possède un pointeur, et je voudrais
implementer une fonction "get" pour le pointeur. J' ai essayé de faire
comme ceci (ma classe se nomme "CASE", le pointeur appartenant à ma
classe se nomme "top"):
void CASE::getC(CASE& R)
{
R = *top;
return;
}
//main, myCase est une instanciation de la classe CASE
CASE test();
myCase.getC(1, test);
cout << test.num << endl;
Mais cela ne marche pas ! Quelqu' un aurait une idée svp ?
Merci d' avance. |
|
| Back to top |
|
 |
Sylvain Guest
|
Posted: Thu Apr 13, 2006 9:06 pm Post subject: Re: pointeur et reference |
|
|
dnanar wrote on 13/04/2006 21:48:
| Quote: |
J' essaye d' utiliser les références pour retourner un pointeur. En
fait, j' ai une classe qui possède un pointeur, et je voudrais
implementer une fonction "get" pour le pointeur.
|
le point est: voulez vous retourner le *pointeur* membre (ce qui
autorise les cas où ce pointeur est null, mais force le test par le
client) ou une référence sur l'instance pointée (dans ce cas le client
utilise sans déréférencer mais la fonction ne peut plus gérer le cas où
lepointeur est null (sauf exception ou allocation à la demande, les 2
peuvent ne pas être acceptable).
glup, j'ai lu "fonction" sans voir votre prototype, donc c'est une
procédure.
| Quote: | J' ai essayé de faire comme ceci (ma classe se
nomme "CASE", le pointeur appartenant à ma
classe se nomme "top"):
void CASE::getC(CASE& R)
{
R = *top;
return;
}
|
que pensez vous qu'il advient si vous n'insérez pas un "return" ??
le code va continuer à la ligne suivante ?
ceci déclare une fonction nommée test qui retourne une instance de CASE,
vous ne vouliez pas faire cela, mais juste déclarer une instance, donc:
CASE test;
| Quote: | myCase.getC(1, test);
|
fonctionnera avec le chgt ci-avant, mais pourquoi ne pas écrire:
struct CASE {
int num;
CASE* top;
[const] CASE& getC() const {
return *top;
}
};
CASE& test = myCase.getC();
voire: cout << myCase.getC().num;
Sylvain. |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|