PDA

View Full Version : [C++] Problema scolastico....


marcurs
10-01-2007, 16:27
1. Si definisca una classe che rappresenta una lista di attesa con priorità FIFO (First In First Out). La lista di attesa è rappresentabile mediante una lista semplice i cui elementi hanno nel campo informativo una stringa di lunghezza massima 24 caratteri. Le possibili operazioni sono:
. L_A(): costruttore che crea una lista vuota;
. in_attesa(nome): se non esiste alcun elemento con il campo informativo uguale a nome viene inserito un nuovo elemento in coda alla lista e si restituisce true, altrimenti la lista non viene modificata e si restituisce false;
. chiamata(): se la lista non è vuota, elimina l’elemento in testa alla lista;
. ~L_A(): distruttore che dealloca la lista.

VIENE DATA COME SOLUZIONE...

//L_A.h
struct elem {char* nome; elem * next; };
class L_A {elem* l;
public:
L_A() {l=0;};
boolean in_attesa (char nome[25]);
void chiamata ();
~L_A(); }

[continua........]
Ho un dubbio... qualcuno mi potrebbe spiegare esaurientemente (quanto è possibile ovviamente :D), le occasioni in cui è necessario mettere dei puntatori ad array quando si utilizzano le classi?

ad esempio... se io nella struct mettevo al posto del "char *nome" solamente un "char nome[N]" indicando N come "const int N=25" e mettendolo nel file L_A.h prima della definizione di struct....
era sbagliato??

Furla
10-01-2007, 21:55
puoi dichiarare come membro della struttura dati un array di dimensione fissa, ma non puoi inizializzare un'oggetto quando lo dichiari durante la dichiarazione della struttura dati di una classe, ma solo al momento della definizione della stessa (ovvero quando verrà creata l'istanza della classe, dichiarando una lista di inizializzazione prima del corpo del costruttore).

quindi ho paura che l'inizializzazione della costante avverrebbe solo dopo la dichiarazione dell'array, il che ci farebbe ottenere un bell'errore dal compilatore.

se ciò che dico è vero (:D),per poter usare una variabile const nella dichiarazione dell'array membro della classe, tale variabile dovrà essere dichiarata, contestualmente alla sua inizializzazione, come variabile globale fuori dalla struttura dati della classe.
in alternativa puoi dichiarare una variabile static const appartenente alla classe per mantenerla privata alla classe e quindi non accessibile dall'esterno.


mi resta sempre il dubbio che i valori dichiarati nella lista di inizializzazione venga utilizzata subito, cioè che l'inizializzazione tramite la lista avvenga al momento della allocazione in memoria della struttura dati della classe. farò qualche esperimento :D