PDA

View Full Version : [C++] Passare un vettore ad una funzione


Allocchino
29-07-2004, 20:57
Salve, stavo programmando in C quando un bel giorno mi decido a passare al C++ per via di cose simpatiche tipo appunto i vettori. :)

Ora nasce il problema:
Uso VC++ 7.0 e con questo codice:



#include <vector>

...

vector<oggetto> lista_oggetti;

...

char carica_oggetto_3ds ( oggetto *lista_oggetti,
char *filename,
vettore_4d_ptr scale, // initial scaling factors
vettore_4d_ptr rot, // initial rotations
vettore_4d_ptr pos) // initial position
{

...

lista_oggetti.push_back (nuovo_oggetto);

...
}


mi spunta fuori questo errore:



error C2228: l'elemento a sinistra di ".push_back" deve avere un tipo classe, struttura o unione
il tipo è "oggetto *"
si intendeva utilizzare "->"?


:mad: Come diamine si passa un vettore a funzione?

Sono acerbo di template e STL (non si era capito :D ) , qualcuno sa come fare?


Vi ringrazio anticipatamente; /* CIAO!! */

cionci
30-07-2004, 02:34
char carica_oggetto_3ds (vector<oggetto> &lista_oggetti

Allocchino
31-07-2004, 11:09
Originariamente inviato da cionci
char carica_oggetto_3ds (vector<oggetto> &lista_oggetti

Funziona grazie! :)

Allocchino
02-08-2004, 20:01
Sono ancora io ed ho questo problema:



Nel mio cammino di conversione di un piccolo motore grafico da C a C++ mi sono incappato in questo problema, qualcuno lo sa risolvere?


/*** definizione di oggetto ***/
typedef struct oggetto {
bool attivo; //variabile di attivazione nell'array degli oggetti
bool da_disegnare; //variabile che indica se l'oggetto verrà disegnato
int id; //id numerico
char nome [64]; //nome dell'oggetto
vettore_4d direzione; //direzione dell'oggetto
vettore_4d world_pos; //posizione nel mondo
int num_vertici; //numero vertici
vettore_4d dir; // rotation angles of object in local
// cords or unit direction vector user defined???

vettore_4d ux,uy,uz; // local axes to track full orientation
// this is updated automatically during
// rotation calls

vettore_4d local_vert[MAX_VERTICI_PER_OGGETTO];
vettore_4d world_vert[MAX_VERTICI_PER_OGGETTO];
unsigned long int num_poligoni; //numero di facce dell'oggetto
poligono poly[MAX_POLY_PER_OGGETTO];
}oggetto, *oggetto_ptr;



/*** lista oggetti ***/
vector<oggetto> lista_oggetti;



oggetto nuovo_oggetto;
load3ds (&nuovo_oggetto, filename, scale, rot, pos);

lista_oggetti.push_back (nuovo_oggetto);



Porca miseria in esecuzione mi da errore! perché non va?

Ciao!!

cionci
02-08-2004, 21:49
Com'è questa funzione ?
load3ds (&nuovo_oggetto, filename, scale, rot, pos);

Allocchino
02-08-2004, 23:08
Si, e l'errore me lo da

lista_oggetti.push_back (nuovo_oggetto);

:(


Non capisco, il manuale dice che si accede ai vettori come fossero array..

cionci
03-08-2004, 01:28
Volevo sapere la dichiarazione di load3ds....

Allocchino
03-08-2004, 15:38
Ops, non avevo capito :) .


char load3ds (oggetto_ptr ogg, char *filename,
vettore_4d_ptr scale, // initial scaling factors
vettore_4d_ptr rot, // initial rotations
vettore_4d_ptr pos) // initial position
{

cionci
03-08-2004, 18:41
Boh....
Ma oggetto ti viene "rimepito" correttamente ocn i dati ?

Allocchino
04-08-2004, 17:41
No, fa errore in esecuzione quando esegue quella riga di pushback.

Il bello è che sto facendo una conversione e prima c'era un semplice array statico al suo posto e funzionava benissimo.

Allocchino
06-08-2004, 13:20
up :(