what is wrong with the implementation of the add function for the vector class here?

Code:namespace project { template <class _T> class type { public : type(); type(int num); type( const type & typ); ~type(); protected : _T val; }; template <class type, size_t n> class vector { public: // constructors/destructor vector( ); // default constructor (size==0) vector( const vector & vec ); // copy constructor ~vector( ); // destructor // operator overloads const vector & operator = ( const vector<type, n>& vec ); // add element to a vector void add(type value); vector<type, n>& operator+=(const vector<type, n>& vec); vector<type, n>& operator-=(const vector<type, n>& vec); // unary vector<type, n>& operator-(); // member functions int length( ) const; // capacity of vector //read access operator for a polynomial const type& operator[]( int index ) const; //write access operator for a polynomial type& operator[]( int index ); protected: int csize; int size; // # elements in array type * list; // array used for storage }; template <class type, size_t n> void vector<type, n>::add(type value) { this.list[this.csize] = value; this.csize++; } }