У меня очень большой разбросанный класс, который по сути является очень надуманным двухмерным связанным списком. Я хочу иметь возможность «скомпилировать» его, под этим я подразумеваю, что хочу завершить список, чтобы можно было сделать только доступ для чтения, а затем переместить все элементы в смежные области памяти. Мое грубое решение таково:
#include <new>
...
MyListNode* pool = new MyListNode[length];
new(&pool[position]) MyListNode();
Проблема в том, что у меня по существу есть два класса, один из которых выделен новым, а другой - этим методом, и когда я пытаюсь удалить любой из объектов, выделенных вышеуказанным методом, glibc убивает программу из-за неверный указатель
Естественное решение состоит в том, чтобы создать два класса и просто использовать полиморфизм во время выполнения, чтобы обеспечить один интерфейс, но две реализации, и т. Д. Есть ли способ, которым стандарт памяти в C ++ допускает такого рода покерные игры?