Originariamente inviato da RooccoXXI
(anche se sono convinto che sia molto utile per capire veramente come funzionano le cose!)
Questo senz'altro. Anche perché poi ti trovi di fronte a problematiche che magari non avevi neanche previsto.

Comunque tu consigli allora di utilizzare un vector all'interno della mia classe ed eventualmente se l'utente decide di utilizzare gli array, creare il costruttore in modo che prenda l'array e lo copi nel mio vector?! (Ho capito correttamente ciò che intendevi?!)
Si. In sostanza la tua classe diventa un wrapper per un vector.
Alla fine devi solo creare i costruttori sul modello del vector.
In più non ti devi preoccupare di implementare il costruttore di copia, l'operatore di assegnamento, distruttore e il passaggio a C++0x "potrebbe" risultare indolore.
In pratica devi solo concentrarti sulle funzioni che intendi sviluppare.
Riprendendo l'esempio di prima:
codice:
#include <vector>
using std::vector;

template <typename T>
class Vector
{
public:
	Vector();
	Vector(const T* ptr, int dim) : _MyVec(ptr, ptr+dim) {}
 
       template <typename InpIter>
	Vector(InpIter a, InpIter b) : _MyVec(a,b) {}

// funzioni specializzate. 
	
private:
        vector<T> _MyVec;
};
Tra l'altro ti consiglierei di usare gli iteratori, non l'operatore[] del vector. In questo modo se un giorno vuoi passare da un vector a una deque o list, basta cambiare una linea di codice.