То, что вы пытаетесь сделать, не является ни легальным C ++, ни имеет смысл.
За выделением с new
должно следовать удаление с delete
, а с new[]
- delete[]
;это должно происходить именно так, а все остальное - неопределенное поведение.
Вы не можете "попытаться проверить, правильно ли вы написали код".Исключения сигнализируют об исключительном поведении во время выполнения , но ваша ошибка является статической ошибкой времени компиляции, которая не может быть обработана , но должна быть фиксированной .
Однако в вашем коде никогда не должно быть точки, в которой вы не знаете что означает данный указатель!Поскольку язык является статически типизированным, вы должны в принципе всегда иметь представление о задействованных типах.А если вы хотите передать объекты (возможно, полиморфно), то все, что требует динамического выделения, должно быть заключено в свой собственный класс менеджера (например, shared_ptr
или unique_ptr
).