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[] avec const 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.
InformationsquelleAutor Painguy | 2012-09-01