Originariamente inviato da RooccoXXI
Ciao a tutti.
Ora, mentre con gli array non vedo problemi perché sono strutture statiche, mi chiedo se ha senso utilizzate un puntatore a uno std::vector, che può essere riallocato se vengono aggiunti nuovi dati.
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.
Inoltre mi chiedevo se è possibile limitare l'istanza di una classe template a tipi fondamentali
Dipende dal compilatore che usi. Se conforme allo standard C++0x ( g++ > 4.3, Vc++2010), si puo fare una cosa del genere.
codice:
template <typename T>
class Vector {
static_assert( std::is_fundamental<T>::value, "Il tipo di dato non è nativo");
etc...
Altrimenti sei costretto a specializzare ogni istanza per i tipi fondamentali.
codice:
// Vector class
#ifndef VECTOR_H
#define VECTOR_H
#include <vector>
using std::vector;
template <typename T>
class Vector
{
public:
Vector();
Vector(const T [], int);
Vector(const vector[/QUOTE]&<T> );
Vector& operator=(const Vector& )
// eventuale supporto per la move semantics (solo C++0x)
Vector& operator=(Vector&& )
Vector& operator=(Vector&& )
~Vector();
private:
};
#endif
template <typename T>
Vector<T>::Vector(const vector<T>& array)
{
...
}