0 votes

fonction de référence d'une autre fonction

J'ai oublié comment référencer une autre fonction dans une fonction en C++ ? En python, elle est déclarée comme une classe pour que je puisse l'utiliser.

double footInches(double foot)
{
 double inches = (1.0/12.00) * foot;
 return inches;
}

double inchMeter(double inch)
{
 double meter = 39.37 * (footInches(inch));
 return meter;
}

Je veux référencer les footInches en inchMeter.

édité

voici le programme principal

int main()
{
 double feet, inch, meter, x = 0;

 cout << "Enter distance in feet to convert it to meter: " << endl;
 cin >> x;

 cout << inchMeter(x);

 return 0;

Je pense que la dernière ligne n'est pas correcte. Je veux d'abord obtenir le x dans footInches, puis aller dans inchMeter, et enfin retourner la réponse de inchMeter.

1voto

Brian R. Bondy Points 141769

Par référence, voulez-vous dire appel ?
Vous appelez la fonction correctement dans votre exemple, mais vous n'avez pas besoin des parenthèses qui l'entourent.

Alors simplement comme ça :

double inchMeter(double inch)
{
 double meter = 39.3700787 * footInches(inch);
 return meter;
}

Si vos fonctions existent dans différents fichiers .cpp, ou si vous devez faire référence à une fonction qui est définie plus tard, vous pouvez utiliser une déclaration directe.

Exemple :

a.cpp :

double footInches(double foot)
{
 double inches = foot * 12.0;
 return inches;
}

b.cpp :

double footInches(double foot); //This is a forward declaration

double inchMeter(double inch)
{
 double meter = 39.3700787 * footInches(inch);
 return meter;
}

0voto

Billy ONeal Points 50631

La manière traditionnelle de "référencer" une fonction arbitraire en C est d'utiliser un pointeur de fonction. Vous n'en avez pas vraiment besoin ici parce que vous n'allez pas changer l'implémentation de la fonction toinches au moment de l'exécution, mais si vous avez besoin d'une "référence à une fonction", faites-le comme ceci :

//Declare a function type that does what you want.
typedef double (*inch_converter_t)(double foot)

double footInches(double foot)
{
 double inches = (1.0/12.00) * foot;
 return inches;
};

//Pass a function pointer to another function for use.
double inchMeter(double inch, inch_converter_t converter)
{
 double meter = 39.37 * (converter(inch)); //Making a function call with the pointer.
 return meter;
}

int main()
{
    inch_converter_t myConverter = footInches;
    doube result = inchMeter(42, myConverter); //Call with function pointer.
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X