К моему большому стыду, у меня не было возможности использовать интеллектуальные указатели в реальной разработке (супервайзер считает это слишком «сложным» и пустой тратой времени). Тем не менее, я планировал использовать их для своих собственных ...C++ и Smart Pointers - как бы умные указатели помогли в этой ситуации?
У меня есть ситуации, связанные с деинсталляцией модуля после их завершения или при загрузке новых данных. Поскольку я использую указатели, я нахожу свой код завалено проверкой на нуль, такие, как эти ...
// TODO: Reset all opened windows
// Deinit track result player
if (trackResultPlayer_)
trackResultPlayer_->reset();
// disconnect track result player
disconnect(trackResultPlayer_);
disconnect(trackResultAnimator_);
}
if (videoPlayerWindow_)
{
videoPlayerWindow_->reset();
// Disconnect the video player window from source movie data
disconnect(videoPlayerWindow_);
}
// Disconnect this module from its children as they would be connected again
disconnect(this);
Если я использовать смарт-указатели, вместо сырых указателей, как бы эта проблема быть смягчена?
Помните, что новый не возвращает NULL (если вы явно не задаете вопрос). –