Код: Выделить всё
template
class MyClass{
element_type* m_data = nullptr;
std::size_t rows, columns; // assume that they have been initialized
inline MyClass(){
this->m_data = new element_type[(this->rows)*(this->columns)]{};
this->m_data_end = this->m_data+(this->rows)*(this->columns);
}
};
Для меня я делал то, что было рекомендовано в этом принятом ответе: https://stackoverflow.com/a/67967472/23051105.
По просьбам комментариев предоставлю более подробную информацию о реализации:
Код: Выделить всё
template
class Parent{
std::size_t rows, columns;
element_type* m_data = nullptr;
element_type* m_data_end = nullptr;
inline Parent(const std::size_t rows, const std::size_t columns) : rows(rows), columns(columns){}
};
template
class MyClass : public Parent {
inline void createInternStorage(){
if (this->m_data != nullptr || this->m_data_end != nullptr)
this->deleteInternStorage();
this->m_data = new element_type[(this->rows)*(this->columns)]{};
this->m_data_end = this->m_data+(this->rows)*(this->columns);
}
inline void deleteInternStorage(){
if (this->m_data != nullptr)
delete[] this->m_data;
this->m_data = nullptr;
this->m_data_end = nullptr;
}
inline MyClass(const std::size_t rows, const std::size_t columns) : Parent(rows, columns) {
this->createInternStorage();
}
};
Подробнее здесь: https://stackoverflow.com/questions/786 ... bage-value