cpp07/ex02/Array.hpp

54 lines
1.1 KiB
C++

#ifndef ARRAY_HPP
#define ARRAY_HPP
#include <iostream>
template <typename T>
class Array
{
private:
T *_data; // pointeur vers les données
size_t _size; // nombre d'éléments
public:
Array() : _data(NULL), _size(0) {}
Array(unsigned int n)
{
_data = new T[n]();
_size = n;
}
Array(const Array &other) : _size(other._size)
{
_data = new T[_size]();
for (size_t i = 0; i < _size; i++)
_data[i] = other._data[i];
}
~Array()
{
delete[] _data;
}
Array &operator=(const Array &other)
{
if (this == &other)
return *this;
delete[] this->_data;
_size = other._size;
_data = new T[_size]();
for (size_t i = 0; i < _size; i++)
_data[i] = other._data[i];
return *this;
}
T &operator[](size_t index)
{
if (this->_size <= index)
throw std::out_of_range("Out of array size");
else
return this->_data[index];
}
size_t size() const
{
return this->_size;
}
};
#endif