Je veux juste vérifier ici comment passer une référence à une fonction qui veut un pointeur. J'ai un exemple de code ci-dessous. Dans mon cas, je passe une référence C++ à une fonction C qui va changer ma valeur.Comment transmettre une référence C++ à un argument de pointeur d'une fonction C?
Devrais-je utiliser l'adresse de l'opérateur '&' dans cet appel: retCode = MyCFunc (& myVar)? Il semble que je prenne une référence d'une référence, ce qui n'est pas autorisé en C++. Cependant, il compile bien et semble fonctionner.
MainFunc()
{
int retCode = 0;
unsigned long myVar = 0;
retCode = MyCPlusPlusFunc(myVar);
// use myVars new value for some checks
...
...
}
int MyCPlusPlusFunc(unsigned long& myVar)
{
int retCode = 0;
retCode=MyCFunc(&myVar);
return retCode;
}
int MyCFunc (unsigned long* myVar)
{
*myVar = 5;
}
Je pensais que mon code était au-dessus était bien, jusqu'à ce que je cet exemple sur le site IBM (ils ne passent pas à l'adresse '&' de l'opérateur): http://publib.boulder.ibm.com/infocenter/zos/v1r11/index.jsp?topic=/com.ibm.zos.r11.ceea400/ceea417020.htm
// C++ Usage
extern "C" {
int cfunc(int *);
}
main()
{
int result, y=5;
int& x=y;
result=cfunc(x); /* by reference */
if (y==6)
printf("It worked!\n");
// C Subroutine
cfunc(int *newval)
{
// receive into pointer
++(*newval);
return *newval;
}
En général, je sais que vous pouvez faire ce qui suit:
int x = 0;
int &r = x;
int *p2 = &r; //assign pointer to a reference
Quel est le problème? Devrais-je utiliser l'adresse & de l'opérateur dans mon appel ou non?
Veuillez corriger votre code en utilisant le bouton approprié dans le formulaire d'édition. – Muggen
@Muggen - Je l'ai déjà fait –
Merci ... semble beaucoup mieux maintenant! – Lair78