diff options
Diffstat (limited to 'week13/Exercise2/Indexable.hpp')
| -rw-r--r-- | week13/Exercise2/Indexable.hpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/week13/Exercise2/Indexable.hpp b/week13/Exercise2/Indexable.hpp new file mode 100644 index 0000000..dd5fb6b --- /dev/null +++ b/week13/Exercise2/Indexable.hpp @@ -0,0 +1,25 @@ +#pragma once +#include "Container.hpp" + +template <class T> +class Indexable : virtual public Container<T> { +public: + T& operator[](unsigned index); + const T& operator[](unsigned index) const; +}; + +template <class T> +T& Indexable<T>::operator[](unsigned index) { + if (index > this->size) { + throw "Index out of range!"; + } + return this->arr[index]; +} + +template <class T> +const T& Indexable<T>::operator[](unsigned index) const { + if (index > this->size) { + throw "Index out of range!"; + } + return this->arr[index]; +} |
