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:

codice:
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.