Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - problema nella dichiarazione di una struttura
Forum - C/C++ - problema nella dichiarazione di una struttura

Avatar
cpiupiu89 (Normal User)
Newbie


Messaggi: 2
Iscritto: 01/08/2010

Segnala al moderatore
Postato alle 17:21
Domenica, 01/08/2010
Salve,
ho un problema nella dichiarazione di una struttura. L'idea è quella di definire un array di questa struttura e di inserirvi i valori manualmente, una volta definito l'array.
Questa è la definizione della struttura in cui mi dà l'errore(l'errore riguarda la grandezza dell'array, cioè scene)

Codice sorgente - presumibilmente C++

  1. typedef struct personaggio{
  2.  
  3. //in quante scene compare il personaggio
  4. int scene;
  5.  
  6. //in quali scene compare il personaggio(le scene sono contenute in un array)
  7. int scena[scene/*o personaggio::scene*/];
  8.  
  9. //la posizione occupata all'interno della scena
  10. int x[scene/*o personaggio::scene*/];
  11. int y[scene/*o personaggio::scene*/];
  12.  
  13. }personaggio;



Spero mi possiate essere d'aiuto :k:
grazie

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 17:29
Domenica, 01/08/2010
Il compilatore deve sapere quanto vale

scene

al momento della compilazione.

Se deve essere una variabile, allora usa dei puntatori e alloca dinamicamente i vettori.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
gigisoft (Member)
Guru


Messaggi: 695
Iscritto: 11/10/2008

Segnala al moderatore
Postato alle 7:53
Lunedì, 02/08/2010
Testo quotato

Postato originariamente da cpiupiu89:

Codice sorgente - presumibilmente C++

  1. typedef struct personaggio{
  2.  
  3. //in quante scene compare il personaggio
  4. int scene;
  5.  
  6. //in quali scene compare il personaggio(le scene sono contenute in un array)
  7. int scena[scene/*o personaggio::scene*/];
  8.  
  9. //la posizione occupata all'interno della scena
  10. int x[scene/*o personaggio::scene*/];
  11. int y[scene/*o personaggio::scene*/];
  12.  
  13. }personaggio;






Uhmm... mi sa che la parola personaggio sia scritta una volta di troppo...


Le cose si fanno per bene o non si fanno affatto
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 8:43
Lunedì, 02/08/2010
Testo quotato

Postato originariamente da gigisoft:

Uhmm... mi sa che la parola personaggio sia scritta una volta di troppo...



Non è questo il problema. La prima volta si riferisce alla struttura e la seconda al nuovo tipo dato.

Non è il massimo della chiarezza ma non genera errori. Sicuramente sarebbe meglio usare una struttura anonima.

Ultima modifica effettuata da nessuno il 02/08/2010 alle 8:47


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
cpiupiu89 (Normal User)
Newbie


Messaggi: 2
Iscritto: 01/08/2010

Segnala al moderatore
Postato alle 11:50
Giovedì, 05/08/2010
Ho provato a fare cosi:

Codice sorgente - presumibilmente C++

  1. typedef struct personaggio{
  2.  
  3. //in quante scene compare il personaggio
  4. int *scene;
  5.  
  6. int *num_scena;
  7.  
  8. //la posizione occupata all'interno della scena
  9. int *x;
  10. int *y;
  11. personaggio();
  12.  
  13. }personaggio;
  14.  
  15. personaggio::personaggio()
  16. {
  17.  
  18. scene=new(int);
  19. //vettori
  20. x=(int*)malloc(*scene *sizeof (int));
  21. y=(int*)malloc(*scene *sizeof (int));
  22. num_scena=(int*)malloc(*scene *sizeof (int));
  23.  
  24. }


Facendo cosi, dovrei dichiarare poi un puntatore alla struttura in questo modo

Codice sorgente - presumibilmente C/C++

  1. const int num_pers = 5; //numero personaggi
  2. personaggio*actor[num_pers]
  3. for(int i = 0 ; i < num_pers;i++)
  4. {
  5. actor[i] = new(personaggio);
  6. }



A questo punto, in teoria, dovrei inserire i dati a mano...(ora faccio esempio semplice)


Codice sorgente - presumibilmente C#

  1. int num=4;
  2. int*numero = &num;
  3. int actor->scene = num;
  4. int actor[0]->num_scena[0]=2;
  5. //questa riga in teoria dovrebbe mettere nell'array di scena il numero della scena a cui
  6. //corrisponde, pero mi da un errore di unhandled excepton...access violation ecc



E' due giorni che mi ci sto picchiando ma non riesco a trovare una via d'uscita.
Ringrazio comunque chi si è interessato dell'argomento  

PM Quote