В проекте у меня есть два вида классов:
- Тип A: обычно назначаемые классы, которыми я управляю
std::unique_ptr<>
- Тип B: классы, чьи новые были переопределены для выделения памяти из импульсный пул памяти
Для последнего правильное использование - вызывать new, как обычно, для выделения нового экземпляра, , но никогда не вызывать delete. Эти объекты очищаются, когда объект пула памяти выходит из области видимости. .
Поэтому, если я случайно сохраню экземпляр типа B в std::unique_ptr<>
, я получу ошибку сегментации. Аналогичным образом, вызов метода delete для указателя типа B. был бы плохой идеей.
Какие механизмы C ++ следует использовать для предотвращения возникновения ошибок такого типа?
В качестве простого, но уродливого исправления я подумываю переименовать все мои классы типа B в префикс, такой как MP (для пула памяти), поэтому я визуально знаю , а не , чтобы вставить их в станд :: unique_ptr <>.
Однако было бы крайне желательно иметь языковой механизм, который может улавливать проблемы во время компиляции или, по крайней мере, умереть более очевидным образом, если я или другие члены моей команды случайно совершат ошибки такого типа.