Я создаю лист свойств, полученный из CMFCPropertySheet, он создается из мэйнфрейма при вызове начальной страницы редактора. Мой вопрос: когда вызывается дополнительная страница, я бы хотел, чтобы для нее была создана новая вкладка. Каждая вызываемая страница будет получена одним и тем же классом, но максимальное количество страниц неизвестно, поэтому ее необходимо определить как
CEditorPage *m_editorpage[];
но компилятор жалуется, что он использует массив нулевого размера.
В деструкторе я удаляю страницы, созданные в цикле for, от 0 до количества страниц в листе.
в посте уничтожить удаляю этот указатель.
Программа вылетает и останавливается на
delete this;
Если я не использую массив, он не падает. Но поскольку я использую одну и ту же страницу класса на каждой странице свойств, и я не знаю, сколько их будет, мне нужно использовать массив нулевого размера.
В любом случае я получаю утечку памяти.
Как создать массив нулевого размера на основе CMFCPropertyPage в листе свойств, чтобы добавить дополнительные страницы во время выполнения и выполнить надлежащую очистку при закрытии листа свойств. Я получаю сбой или утечку памяти в каждом методе, который я пробовал.
Попробуйте использовать динамический массив
CEditorPage *m_editorpage = new CEditorPage[_num_of_editorpage];
....
delete[] m_editorpage ;
Как насчет использования класса std :: vector или аналогичного?