PDA

Visualizza la versione completa : [C++] Problema programmazione ad oggetti


clipsound
14-07-2005, 20:15
Salve a tutti.

ho un problema di programmazione di base che non riesco a risolvere;
sto programmando con le glut un giochetto OpenGl di astronavi.Per diversi calcoli da fare su posizione e movimenti devo sfruttare delle funzioni per reciclare codice.Il problema sta nel fatto che per ogni astronave esiste un oggetto che memorizza la posizione(scritto in c++) mentre il resto del codice e' scritto in c tradizionale per la gestione dei appunto dei movimenti.

pensate ad una situazione di questo tipo:


Astronave astro1(x,y,z);
//creata un oggetto di tipo Astronave dalla classe Astronave
//con coordinate x y e z e che si chiama astro1

modificapos (traiettoriax, traiettoriay, traiettoriaz)
{
...

//questo e' il metodo che modifica la posizione

astro1.modpos(x,y,z);

...

}




Dentro modificapos ci sara' una chiamata ad una funzione specifica scritta in cpp che andra' a variare gli attributi di astro1.Chiaramente sara' una funzione tipo astro1.modpos(x,y,z);
Il problema e' che la funzione che modifica la posizione mi serve per riutilizzare lo stesso codice con diverse astronavi(astro1, astro2, astro3 etc).Solo che non riesco a sostituire astro1.modpos(x,y,z) con una chiamata a funzione astratta.

Come posso generalizzare la chiamata a funzione astro1.modpos(x,y,z) e riutilizzare il codice per diverse astronavi istanziate?
E' eventualmente possibile istanziare un oggetto generico che puo' assumere valori diversi per ogni chiamata che faccio di modificapos ?


Grazie per l'attenzione.

PS:e' necessario mantenere la stessa struttura dei linguaggi,
ovvero devo avere gli oggetti istanziati con il c++ ed il resto del codice in c tradizionale.

clipsound
15-07-2005, 16:43
nessuno ha idea di come fare???

XVincentX
16-07-2005, 00:21
IO non capisco come fai a usare le classi del C++ in un codice C

clipsound
16-07-2005, 21:20
ok, innanzi tutto devi importare la classe che genera gli oggetti...
se ad esempio nella mia cartella c'e' una classe scritta in c++ che si chiama persona.cpp dove chiaramente c'e' un costruttore chiamato persona(char capelli, char occhi, int anni) puoi istanziare in un file chiamato societa.c una persona cosi:

persona XVincentX(marroni, neri, 23);

una volta istanziato XVincentX potremmo accedere o modificare i suoi valori solo se in persona.cpp sono stati definiti dei metodi per modificare gli attributi. Facciamo finta che una volta all'anno l'eta' debba aumentare. Per cui in societa.c ci sara' la seguente chiamata:


XVincentX.compleanno();

e int compleanno(void) in persona.cpp non fara' altro che fare il seguente codice:

int compleanno (void){
anni=anni+1;
return anni;
}

comunque sia adesso ho capito anche come poter costruire una funzione generica che modifichi gli oggetti senza doverli esplicitamente citare.Basta semplicemente usare un puntatore all'oggetto ed usare quello per accedere a tutti i metodi definiti...

Loading