Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C] errore: request for member `g' in something not a structure or union

    Ho questo pezzo di codice che mi da' l'errore
    "request for member `g' in something not a structure or union" alle righe che ora indico con * e non capisco perche'.

    void Fmutazione(crom *c1, crom *c2){
    int k;
    gene temp;
    // genera intero casuale minore della lunghezza del crom
    srand(time());
    k=(int)rand()*(np)/(RAND_MAX+1.0);
    temp=*c1.g[k];
    *c1.g[k]=*c2.g[k];
    *c2.g[k]=temp;
    }

    dove

    // gene (punto bel piano)
    typedef struct{
    double x;
    double y;
    } gene;

    // cromosoma
    typedef struct{
    gene g[np]; // vettore dei geni che compongono il crom
    } crom;

  2. #2
    scusate, non ho indicato con * per non confondere con puntatori ma e' in

    temp=*c1.g[k];
    *c1.g[k]=*c2.g[k];
    *c2.g[k]=temp;

  3. #3
    Non ho compilatori sottomano, cmq prova
    al posto di :
    codice:
    temp=*c1.g[k];
    *c1.g[k]=*c2.g[k];
    *c2.g[k]=temp;
    mettere...

    codice:
    temp = c1 -> g[k];
    c1 -> g[k] = c2 -> g[k];
    c2 -> g[k] = temp;

  4. #4
    grazie mille, ora compila, pero' non ho capito: quale e' la differenza tra usare *a.b e a->b ?

    Grazie mille ancora

  5. #5
    *a.b accede al membro b della struttura puntata da a
    a->b accede al membro puntato da b nella struttura a

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.