Destruktor i Try .. Catch
Ostatnio zmodyfikowano 2026-04-04 20:40
tBane Temat założony przez niniejszego użytkownika |
Destruktor i Try .. Catch » 2026-04-04 18:59:42 Cześć. Chcę napisać dobrze program tak jak zalecił mi jeden z użytkowników tego forum pekfos i postanowiłem dodać try .. catch do destruktora. Czy dobrze jest napisany poniższy desktruktor? Struktura klasyclass Dialog_Brightness_Contrast : public Dialog { public: BrightnessContrastState _state; std::shared_ptr < SliderWithButtons > _brightness_slider; std::shared_ptr < SliderWithButtons > _contrast_slider; std::shared_ptr < ColoredButtonWithText > _reset; std::shared_ptr < ColoredButtonWithText > _confirm; std::vector < std::shared_ptr < Layer >> _original_layers; std::vector < std::shared_ptr < Layer >> _edited_layers; Dialog_Brightness_Contrast( std::vector < std::shared_ptr < Layer >> layers ); ~Dialog_Brightness_Contrast(); void saveOriginalLayers( std::vector < std::shared_ptr < Layer >> layers ); void setPosition( sf::Vector2i position ); void setTheFilter(); void cursorHover(); void handleEvent( const sf::Event & event ); void update(); void draw(); };
DestruktorDialog_Brightness_Contrast::~Dialog_Brightness_Contrast() { try { if( Dialog_Brightness_Contrast::_state == BrightnessContrastState::Idle ) { _brightness_slider->setValue( 0 ); _contrast_slider->setValue( 0 ); getCurrentAnimation()->getCurrentFrame()->_layers.clear(); getCurrentAnimation()->getCurrentFrame()->_layers = _edited_layers; layers_panel->loadLayersFromCurrentFrame(); } else { if( selection->_state == SelectionState::Selected ) { sf::Image original_image = getCurrentAnimation()->getCurrentLayer()->_image; pasteImageWithMask( getCurrentAnimation()->getCurrentLayer()->_image, * selection->_resizedImage, selection->_resizedRect.position.x, selection->_resizedRect.position.y, * selection->_resizedMaskImage,( toolbar->_option_transparency->_checkbox->_value == 0 ) ? sf::Color::Transparent : toolbar->_second_color->_color ); history->saveStep(); canvas->_isEdited = true; selection->normalize( selection->_resizedRect ); getCurrentAnimation()->getCurrentLayer()->_image = original_image; } else { history->saveStep(); } } } catch( const std::exception & e ) { std::cerr << "Exception in Dialog_Brightness_Contrast destructor: " << e.what() << std::endl; } catch( ... ) { std::cerr << "Unknown exception in Dialog_Brightness_Contrast destructor" << std::endl; } }
|
|
| « 1 » |