L'Expression doit avoir (Pointeur-vers-) type de fonction lors de l'utilisation des structures
Donc, fondamentalement, ce que je fais, c'est le passage d'un tableau de structures à partir d'une fonction à une autre fonction. Il travaille pour le spectacle de fonctions, mais pas pour les fonctions max :/exactement Ce que je fais mal?
void show( const ABC & x ){
cout<<"{"<<x.n<<",'"<<x.c<<"',{"<<x.a[0]<<","<<x.a[1]<<","<<x.a[2]<<"}}";
}
void show( const ABC arr[], unsigned elements ){
for(unsigned i=0; i<elements; i++)
show(arr[i]);
}
le suivant ne fonctionne pas
double max( const ABC & x ){
double max=x.a[2];
if(x.a[1]>max)
max=x.a[1];
if(x.a[0]>max)
max=x.a[0];
return max;
}
double max( const ABC arr[], unsigned elements ){
double max=arr[2].a[3];
for(unsigned i=0; i<elements; i++)
if(max<max(arr[i])){
max=max(arr[i]);
}
return max;
}
- Dans l'avenir, d'envisager de faire l'erreur que le compilateur vous donne explicite. Croisant la ligne de(s) l'erreur est de vous indiquer, c'est très utile aussi bien. Il aide beaucoup dans la compréhension de ce qui se passe.
- Vous pouvez également remplacer le
const ABC arr[]
avecconst ABC* arr
. Les deux énoncés sont probablement équivalent, et vous ne devriez pas avoir à modifier quoi que ce soit qui fait référence à 'arr', mais si elle est en vous donnant une sorte d'erreur d'accès il est vaut le coup.
Vous devez vous connecter pour publier un commentaire.
Renommer votre
double
variable à autre chose quemax
. Comme les choses sont, c'est de cacher les fonctions qui portent le même nom, c'est pourquoi l'appel de l'expression n'est pas valide (que vous essayez de passer des arguments à unedouble
).