Así que, básicamente, lo que estoy haciendo es pasar un array de structs de una función a otra función. Funciona para el show de funciones, pero no para la función de max : /¿Qué estoy haciendo 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]);
}

la siguiente no funciona

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;
}
  • En el futuro, considere la posibilidad de cometer el error de que el compilador te da explícito. Referencias cruzadas de la línea(s) el error está señalando es muy útil también. Ayuda mucho en averiguar lo que está pasando.
  • Usted también puede querer reemplazar la const ABC arr[] con const ABC* arr. Ambas declaraciones son probablemente equivalente, y usted no debería tener que modificar nada de lo que hace referencia a ‘arr’, pero si se da algún tipo de error de acceso merece la pena un tiro.
InformationsquelleAutor Painguy | 2012-09-01

1 Comentario

  1. 3

    Cambiar el nombre de tu double variable para algo más que max. Como están las cosas, es ocultar las funciones que comparten el mismo nombre, de ahí que la llamada de expresión no es válida (usted está tratando de pasar argumentos a un double).

    • Oh wow gracias…que fue un error de mi parte. No estoy seguro de cómo lo echaba de menos jaja

Dejar respuesta

Please enter your comment!
Please enter your name here