Oppure

Loading
01/08/10 15:21
cpiupiu89
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)

typedef struct personaggio{

//in quante scene compare il personaggio
int scene;

//in quali scene compare il personaggio(le scene sono contenute in un array)
int scena[scene/*o personaggio::scene*/];

//la posizione occupata all'interno della scena
int x[scene/*o personaggio::scene*/];
int y[scene/*o personaggio::scene*/];

}personaggio;


Spero mi possiate essere d'aiuto :k:
grazie
aaa
01/08/10 15:29
nessuno
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 ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
02/08/10 5:53
gigisoft
Postato originariamente da cpiupiu89:

typedef struct personaggio{

//in quante scene compare il personaggio
int scene;

//in quali scene compare il personaggio(le scene sono contenute in un array)
int scena[scene/*o personaggio::scene*/];

//la posizione occupata all'interno della scena
int x[scene/*o personaggio::scene*/];
int y[scene/*o personaggio::scene*/];

}personaggio;




Uhmm... mi sa che la parola personaggio sia scritta una volta di troppo...
aaa
02/08/10 6:43
nessuno
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 02/08/10 6:47
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
05/08/10 9:50
cpiupiu89
Ho provato a fare cosi:

typedef struct personaggio{ 

//in quante scene compare il personaggio 
int *scene; 
 
int *num_scena; 

//la posizione occupata all'interno della scena 
int *x; 
int *y; 
personaggio();

}personaggio;

personaggio::personaggio()
{

scene=new(int);
//vettori
x=(int*)malloc(*scene *sizeof (int));
y=(int*)malloc(*scene *sizeof (int));
num_scena=(int*)malloc(*scene *sizeof (int));
 
}

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

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


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


int num=4;
int*numero = &num;
int actor->scene = num;
int actor[0]->num_scena[0]=2;
//questa riga in teoria dovrebbe mettere nell'array di scena il numero della scena a cui 
//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
aaa