#ifndef VARIABLE_ASSIGNMENT_HPP #define VARIABLE_ASSIGNMENT_HPP #include "Variable.hpp" template struct VariableAssignment { VariableAssignment(unsigned int length) : _length(length), _assignment(new T[length]) { } ~VariableAssignment() { delete[] _assignment; } const T& operator[] (const Variable x) const { if (x.id() < 0 || x.id() >= _length) { throw "Array out of bounds"; } return _assignment[x.id()]; } T& operator[] (const Variable& x) { if (x.id() < 0 || x.id() >= _length) { throw "Array out of bounds"; } return _assignment[x.id()]; } private: unsigned int _length; T* _assignment; }; #endif