Tralasciando la qualità dell'implementazione:
codice:
#ifndef ARRAY_H
#define ARRAY_H
#include <iostream>
template <typename T>
class Array
{
public:
Array(int = 1); // Costruttore di default
~Array();
T & operator[](int);
private:
int dimensioneArray;
T* arrayPtr;
};
template <typename T>
Array<T>::Array(int dimensione)
{
if (dimensione > 0) // Controlla che la dimensione sia valida
{
dimensioneArray = dimensione;
}
else // Imposta la dimensione di default (1)
{
dimensioneArray = 1;
}
arrayPtr = new T[dimensioneArray]; // Alloca l'array dinamico
for (int i = 0; i < dimensioneArray; i++) // Inizializza tutti gli elementi a 0
{
arrayPtr[i] = 0;
}
}
template <typename T>
Array<T>::~Array()
{
delete [] arrayPtr; // Dealloca la memoria occupata
}
template <typename T>
T & Array<T>::operator[](int elemento)
{
if (elemento < 0 || elemento >= dimensioneArray)
{
std::cerr << "Errore: elemento inesistente." << std::endl;
}
return arrayPtr[ elemento ];
}
#endif