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;
};