m_elements[i] = new struct element[m_element_size];
Это создает массив размером element
m_element_size
Чтобы динамически создать структуру, просто используйте new struct element
или new element
.
Если вам не нужно инициализировать значения в вашем массиве, вам может быть даже лучше не хранить указатели, а реальные объекты в вашем массиве:
m_elements = new element[m_number_of_elements];
Чтобы «изменить размер» массива, вам фактически нужно выделить новый больший массив, скопировать содержимое текущего массива в новый и удалить старый массив.
// Allocate new array
element* newArray = new element[m_number_of_elements + 1];
// Copy old array content into new one
memcpy(newArray, m_elements, m_number_of_elements * sizeof(element)];
// Delete old array
delete[] m_elements;
// Assign new array
m_elements = newArray;
// Keep new size
m_number_of_elements += 1;
Но вам определенно следует использовать std :: vector , который проще и умнее этого:
std::vector<element> elements;
// Add an element
Element element;
...
elements.push_back(element);