Array generico

di il
4 risposte

Array generico

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?

4 Risposte

  • Re: Array generico

    Da dove arriva il 10?
    template <typename T, size_t size = 10>
    class Pila
    {
    	T array[size];
    .........
    };
    
    main
    
        struct  calciatore{
        char nome[20];
        int presenze;
        int goal;
        };
    
        int main()
        {
    		Pila<calciatore> pila;
    		// oppure
    		//Pila<calciatore,numero maggiore di zero> pila;
    		return 0;
        }
    
  • Re: Array generico

    Un altro aiutino:
    template <typename T, size_t size = 10>
    class Pila
    {
    	T array[size];
    public:
    	Pila()
    	: elements_inserted(0)
    	{
    
    	};
    private:
    	size_t elements_inserted;
    }
  • Re: Array generico

    Il 10 me lo sono inventato, in ogni caso domani riprendo questo esercizio, ora ne sto facendo un altro e sto troppo fuso , grazie skynet
  • Re: Array generico

    Come faccio a tener traccia delle posizioni?
    devo implementare il metodo push che prende come argomento un tipo calciatore, mi viene in mente solamente di aumentare la dim di 1 e poi?
Devi accedere o registrarti per scrivere nel forum
4 risposte