Home
Accesso / Registrazione
 di 

Programmazione orientata agli oggetti in ANSI-C. Manutenzione delle gerarchie di classe. Inizializzazione

Programmazione orientata agli oggetti in ANSI-C. Manutenzione delle gerarchie di classe. Inizializzazione

Tipicamente, otteniamo una descrizione di classe spedendo new() ad una descrizione di metaclasse. Nel caso di Class e Object vediamo le seguenti chiamate:

const void * Object = new(Class,
"Object", Object, sizeof(struct Object),
ctor, Object_ctor,
dtor, Object_dtor,
differ, Object_differ,
puto, Object_puto,
0);
const void * Class = new(Class,
"Class", Object, sizeof(struct Class),
ctor, Class_ctor,
dtor, Class_dtor,
0);

Sfortunatamente, entrambe le chiamate si affidano l'una all'altra prima che siano state completate. Di conseguenza, l'implementazione di Class e Object in Object.c richiede una inizializzazione statica delle descrizioni di classe.

Questo è l'unico punto in cui inizializziamo esplicitamente una struct Class.

static const struct Class object [] = {
{ { object + 1 },
"Object", object, sizeof(struct Object),
Object_ctor, Object_dtor, Object_differ, Object_puto
},
{ { object + 1 },
"Class", object, sizeof(struct Class),
Class_ctor, Class_dtor, Object_differ, Object_puto
}
};
const void * Object = object;
const void * Class = object + 1;

Un nome di array è l'indirizzo del primo elemento dell'array e possiamo già utilizzarlo per inizializzare i componenti degli elementi. Faremo in seguito riferimento all'inizializzazione di struct Object per farvi notare aspetti interessanti dell'inizializzazione tramite array.

 

 

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere al Blog

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 2 utenti e 38 visitatori collegati.

Utenti online

Ultimi Commenti