Sto cercando di svolgere una traccia nella quale è richiesta la realizzazione di un array dei tipo generico che poi nel main dovrà essere instanziato con il tipo della struct che devo definire io
posto la traccia :
Si realizzi, mediante l'utilizzo dei costrutti per la gestione di classi in C++, una pila di elementi di tipo Calciatore.
Ogni calciatore è contraddistinto dal suo nome, dal numero di presenze e dal numero di goal segnati. La classe
Pila è realizzata mediante un array statico (solo per matricole N46: template nel tipo T degli elementi, in
particolare si istanzi T nel main con la classe Calciatore).
Lo studente dovrà implementare i metodi necessari ad inserire nuovi elementi nella pila, eliminare elementi dalla
pila e stampare l'intero contenuto della pila. Lo studente, oltre a garantire una corretta gestione della memoria in
caso di inserimento di nuovi elementi, eliminazione degli stessi o distruzione dell'intera pila,dovrà inoltre
implementare quanto necessario affinché i contenuti della pila vengano completamente ricopiati in caso di costruzione per copia o assegnazione. (solo per matricole N46 e N39: la funzione di inserimento deve sollevare una eccezione nel caso di tentativo di inserimento in una pila piena).
La struttura dati Calciatore dovrà essere realizzata utilizzando il costrutto struct come segue:
struct calciatore {
char* nome;
int presenze;
int goals;
}
Si verifichi la corretta implementazione mediante il seguente programma di test (solo per matricole N46 e N39: il
presente main deve essere modificato per renderlo compatibile con la classe template e/o per prevedere la
gestione dell'errore)
int main(int argc, char *argv[]){
calciatore c1;
calciatore c2;
c1.nome=new char[30];
c2.nome=new char[30];
strcpy(c1.nome,”Francesco Totti”);
c1.presenze=4;
c1.goals=1;
strcpy(c2.nome,”Morgan De Sanctis”);
c2.presenze=4;
c2.goals=3;
//verifica funzionamento inserimento e stampa
Pila p;
p.push(c1);
p.push(c2);
p.stampa();
//verifica funzionamento pop e copia
Pila p2=p;
p.pop();
calciatore c3;
c3.nome=new char[30] ;
strcpy(c3.nome,”Iezzman”);
c3.presenze=3;
c3.goals=-2;
p2.push(c3);
cout << ”Pila originale:” << endl;
p.stampa();
questà è la mia struct :
struct calciatore{
char nome[20];
int presenze;
int goal;
};
se non dovessi generalizzarlo, il vettore sarebbe così :
calciatore pila[10];
quindi generalizzato ho pensato potessi fare così:
template <class t>
t pila[10];
però riscontro quest'errore template declaration of 't pila [10]
non è che mi devo creare anche la classe Array per fare questa cosa?