Immaginavo che std::vector avesse un puntatore interno (ovviamente!). Però allora se il mio puntatore è inutile (tra l'altro dovrebbe essere vector<T>* e non solo T*, giusto?) come faccio a creare una classe con un solo dato membro (il mio Vettore vero e proprio) che funzioni sia per gli std::vector che per gli array?!Originariamente inviato da shodan
Concettualmente non fai altro che creare un T** visto che std::vector di suo ha un T* interno. Quindi potrebbe non avere senso.
Ha più senso invece utilizzare un puntatore T* interno alla tua classe da manipolare come ti serve.
Non ho più aggiornato il compilatore.Dipende dal compilatore che usi. Se conforme allo standard C++0x ( g++ > 4.3, Vc++2010), si puo fare una cosa del genere.
Altrimenti sei costretto a specializzare ogni istanza per i tipi fondamentali.codice:template <typename T> class Vector { static_assert( std::is_fundamental<T>::value, "Il tipo di dato non è nativo"); etc...Sono fermo alla 4.2.1. Prossimamente però l'aggiorno ma prima di quest'estate non avrò tempo di aggiornare più di quel tanto le mie conoscenze in C++ (C++0x)!
Il passaggio per riferimento l'avevo già visto, comunque grazie!![]()