Originariamente inviato da shodan
Intanto devi avere due dati: T* e una variabile per la dimensione (int, std::size_t; long long, fai tu).

Poi basta fare l'overload del costruttore.
Ad esempio (i tipi delle variabili le semplifico in int per comodità).
codice:
// costruttori. 
Vector(T* p, int size) // costruttore che prende il puntatore al primo elemento e la dimensione.
{
    _Ptr = new T[Size];
    std::copy(p, p+size,_Ptr);
}

template <typename InpIter>
Vector(InpIter first, InpIter last) // costruttore che un input iterator al primo e ultimo elemento.
{
    _Ptr = new T[ std::distance(first,last) ];
    std::copy(first, last,_Ptr);
}

T MyArray0[128];
// etc

Vector vec0(MyArray,128);

T MyArray1[128];
// etc

Vector vec1(MyArray,MyArray+128);
// oppure
// Vector vec1(&MyArray[0],&MyArray[128]);
 

std::vector std_vec;
// etc
Vector vec1( vec.begin(),vec.end() );
Però se devi usare la tua classe solo per memorizzare dati, stai reinventando la ruota.
Se devi solo travasarli per poi fornire metodi di elaborazione è un altro paio di maniche.

Tra l'altro la domanda iniziale (sul puntatore a vector) è abbastanza strana. Non ti basta un'istanza al vector, senza per forza averne il puntatore?
codice:
template <typename T>
class Vector
{
public:
// etc	
private:
	vector<T> _MyVec;
};
Ovvio che devo avere anche il dato della dimensione. Comunque non devo reinventare la ruota (anche se sono convinto che sia molto utile per capire veramente come funzionano le cose!), ma voglio creare una classe completa, con ridefinizione degli operatori e tutto per utilizzare dei vettori (intesi come oggetto matematico): somma, moltiplicazione per un numero, prodotto scalare, prodotto vettoriale, ...!

E da questa classe derivare poi una classe Point.

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?!)