Вам лучше использовать RAII , умный указатель в этом случае будет конкретным.
Или, альтернативно, Вы можете использовать стратегию Двухэтапное построение .
Вы всегда можете использовать блоки try-catch
внутри тела конструктора и явно вызыватьудаляя все те ресурсы, которые вы динамически распределили, но подумайте о сценарии, в котором у вас есть n
количество ресурсов, которые динамически распределяются, становится очень грязно явно отслеживать каждый ресурс, который вам нужно освободить в catch
, вВ таком сценарии RAII
предоставляет вам наилучшее решение, потому что тогда каждый ресурс неявно заботится о своем освобождении, и вам не нужны дополнительные ресурсы для отслеживания каждого ресурса.
boost::scoped_ptr
или std::tr1::scoped_ptr
подходят для этого сценария вместо необработанных указателей.