#pragma once #include "MixedArray.hpp" template class DirectConcat : public MixedArray { public: virtual MixedArray* operator+=(const MixedArray* other) override; }; template MixedArray* DirectConcat::operator+=(const MixedArray* other) { T* biggerFirst = new T[this->allocated + other->allocated]; U* biggerSecond = new U[this->allocated + other->allocated]; for (int i = 0; i < this->size; i++) { biggerFirst[i] = this->first[i]; biggerSecond[i] = this->second[i]; } for (int i = 0; i < other->size; i++) { biggerFirst[this->size + i] = other->first[i]; biggerSecond[this->size + i] = other->second[i]; } delete[] this->first; this->first = biggerFirst; delete[] this->second; this->second = biggerSecond; this->allocated += other->allocated; this->size += other->size; return this; }