web-dev-qa-db-fra.com

Qu'est-ce que cela signifie qu'une "déclaration ombrage un paramètre"?

J'essaie de créer une fonction qui renvoie le double du nombre entier que je lui transmettrai. Je reçois le message d'erreur suivant avec mon code:

la déclaration de 'int x' masque un paramètre int x; "

Voici mon code:

#include <iostream>
int doublenumber();
using namespace std;
int doublenumber(int x)// <-- this is the function which returns double the value .
{
    int x;
    return 2 * x;
    cout << endl;
}
int main()
{
    int a;
    cout << "Enter the number that you want to double it : " << endl;
    cin >> a;
    doublenumber(a);

    return 0;
}
6
grandx

Vous avez x en tant que paramètre, puis vous essayez de le déclarer également en tant que variable locale, ce à quoi se réfère la plainte concernant "l'observation".

16
Scott Hunter

Je l'ai fait parce que vos conseils étaient très utiles et voici le résultat final:

#include <iostream>
using namespace std;

int doublenumber(int x)
{
    return 2*x;
}

int main()
{
    int a;
    cout << "Enter the number that you want to double it : " << endl;
    cin>>a;
    int n= doublenumber(a);
    cout << "the double value is : " << n << endl;
    return 0;
}
2
grandx
#include <iostream>
using namespace std;
int doublenumber(int x)
{
return 2*x;
}
int main()
{
int a;
cout << "Enter the number that you want to double it : " << endl;
cin>>a;
int d = doublenumber(a);

cout << "Double : " << d << endl;

return 0;
}

Il y a un problème avec votre code. Votre déclaration et votre définition de fonction ne correspondent pas. Supprimez donc la déclaration, car elle n’est pas nécessaire.

Vous déclarez une variable locale x dans la fonction qui occultera les arguments de votre fonction.

1
Swapnil