Dynamic Cast i sprawdzenie typu obiektu
Ostatnio zmodyfikowano dzisiaj: 12 min
tBane Temat założony przez niniejszego użytkownika |
Dynamic Cast i sprawdzenie typu obiektu » 2025-10-23 18:40:42 Witam. Mam problem z kodem. Próbuję sprawdzać typ obiektu i jeżeli jest dany to wykonać instrukcję i przerwać ifa. Chciałbym coś zrobić jak break.. Tylko jak ? if( _currentOnTabElement >= 0 ) { TextInput * ti = dynamic_cast < TextInput * >( _onTabElements[ _currentOnTabElement ] ); if( ti != nullptr ) { ti->_state = TextInputState::Idle; } Button * btn = dynamic_cast < Button * >( _onTabElements[ _currentOnTabElement ] ); if( btn != nullptr ) { btn->unselect(); } }
Pewien sposób znalazłem - to znaczy wrzucić to w funkcję i przypisywać returny ale co gdybym nie chciał tworzyć osobnej funkcji ? |
|
nanoant20 |
» 2025-10-23 20:13:01 only code refactoring |
|
tBane Temat założony przez niniejszego użytkownika |
» 2025-10-23 20:19:08 Mhm.. nie rozumiem ? Zrobiłem jednak nową funkcję z returnem ... void Dialog_Import_Animation::deactivateOnTabElement() { if( _onTabElements.size() == 0 ) return; if( _currentOnTabElement < 0 ) return; TextInput * ti = dynamic_cast < TextInput * >( _onTabElements[ _currentOnTabElement ] ); if( ti != nullptr ) { ti->_state = TextInputState::Idle; return; } Button * btn = dynamic_cast < Button * >( _onTabElements[ _currentOnTabElement ] ); if( btn != nullptr ) { btn->unselect(); return; } }
|
|
nanoant20 |
» 2025-10-23 20:22:00 dobrze zrozumiałeś, można też przenieść było logikę do osobnej funkcji |
|
tBane Temat założony przez niniejszego użytkownika |
» 2025-10-23 20:23:07 ok. to tak zrobiłem. Dzięki! :-) |
|
skovv |
» 2025-10-24 13:51:03 Class klasa { int type; }
#define klasaa 1 #define klasab 2 Class a : public klasa{ A(){ type = klasaa; } } Class b : public klasa{ A(){ type = klasab; } }
... Klasa* o = ... If(o->type == klasaa) { a* obj = static_cast<a*>(o); } Else if(o->type == klasab) b* obj = static_cast<b*>(o); |
|
skovv |
» 2025-10-24 13:51:48 Jak dla mnie najlepszy, przejrzysty sposób. Robisz inspektor? :DD |
|
tBane Temat założony przez niniejszego użytkownika |
» 2025-10-24 13:56:14 Robię obsługę przełączania Elementów GUI poprzez naduszenie klawisza Tab :-) |
|
| « 1 » 2 |