Files
Tower-Defense2/include/td/common/Array.h
2025-07-10 16:48:21 +02:00

55 lines
838 B
C++

#pragma once
#include <cstdint>
namespace td {
/**
* Reflectable std::array
*/
template <typename T, std::size_t S>
class Array {
private:
T* m_Data;
public:
Array() : m_Data(new T[S]) {}
Array(const Array& a_Other) : Array() {
std::memcpy(m_Data, a_Other.m_Data, S);
}
Array(Array&& a_Other) {
m_Data = a_Other.m_Data;
a_Other.m_Data = nullptr;
}
Array(const std::initializer_list<T>& args) {
std::size_t i = 0;
for(const T& element : args) {
m_Data[i] = element;
i++;
}
}
Array& operator=(const Array& a_Other) {
std::memcpy(m_Data, a_Other.m_Data, S);
return *this;
}
Array& operator=(Array&& a_Other) {
std::swap(m_Data, a_Other.m_Data);
return *this;
}
T& operator[](std::size_t a_Index) {
return m_Data[a_Index];
}
~Array() {
delete [] m_Data;
}
};
} // namespace td