SeaMonster131 Temat założony przez niniejszego użytkownika |
[C++] Vector przez referencję » 2012-08-14 12:08:16 Może nie widzę błędu przez to, że praktycznie od paru dni w as3 pisałem a nie w C++, lecz raczej powinno wszystko działać.. Otóż robię GUI na potrzeby projektu, mam klasę zakładek o nazwie bookmark oraz pasek z "plik, edycja, widok" itd.. o nazwie toolbar. Kiedy kliknę na jakiś toolbar to jego bool clicked przybiera wartość true oraz wyświetlają mi się inne toolbary. Tak samo klasa bookmark ma w sobie bool clicked. Nie mogę kliknąć na zakładkę, kiedy clicked jakiegoś toolbara jest true, oraz jak już kliknę na jakąś zakładkę, to clicked w innych zakładkach ma być false. Niestety nie do końca wszystko działa, bo mogę kliknąć na zakładkę kiedy toolbar jest kliknięty, oraz inne zakładki nie przybierają clicked = false.. Mam nadzieję że w miarę jasno problem opisałem, tutaj jest kod: void GUI::bookmark::Draw( CMouse mouse, vector < bookmark >& book, vector < toolbar >& tool ) { if( mouse.getX() >= x && mouse.getX() <= x + w && mouse.getY() >= y && mouse.getY() <= y + h && mouse.Press( 1 ) ) { bool Mozna = true; for( int i = 0; i < tool.size(); i++ ) { if( tool[ i ].Rozwiniety() ) { Mozna = false; break; } } if( Mozna ) { for( int i = 0; i < book.size(); i++ ) { book[ i ].clicked = false; } clicked = true; } } }
GUI::toolbar T_plik( "Plik", 0, 0 ); GUI::toolbar T_edycja( "Edycja", 70, 0 ); GUI::toolbar T_widok( "Widok", 140, 0 ); GUI::toolbar T_info( "Info", 210, 0 );
GUI::bookmark B_zakladki[ 2 ] = { GUI::bookmark( "Kafelki", 20, 50 ), GUI::bookmark( "Obiekty", 100, 50 ) }; vector < GUI::bookmark > book; vector < GUI::toolbar > tool;
book.push_back( B_zakladki[ 0 ] ); book.push_back( B_zakladki[ 1 ] ); tool.push_back( T_plik ); tool.push_back( T_edycja ); tool.push_back( T_widok ); tool.push_back( T_info );
B_zakladki[ 0 ].Draw( mouse, book, tool ); B_zakladki[ 1 ].Draw( mouse, book, tool );
|
|
waxx |
» 2012-08-14 13:13:36 juz abstrahujac od tego ze calosc powinna byc zaprojektowana raczej na bazie parent-child
to wez sobie zdebuguj wpierw czy tool[ i ].rozwiniety() zwraca dobra wartosc |
|
SeaMonster131 Temat założony przez niniejszego użytkownika |
» 2012-08-14 13:30:23 To jest maleńkie proste GUI, nie przykładałem do tego większej wagi, dlatego tak wygląda :) Jednak mogłem całość "na sztywno" zrobić, lecz jeżeli dodałbym np jeszcze kilka toolbarów i 2 zakładki, to chciałbym już napisać te kilka linijek jakoś przejrzyście, niż grzebać głębiej w kodzie i funkcjach i tam dopisać te kilka linijek.
np. T_plik.Rozwinięty() zwraca true, lecz w tej funkcji tool[0].Rozwinięty() zwraca false. A to jest to samo... |
|
waxx |
» 2012-08-14 14:53:02 wrzucaj do vectora wskazniki
|
|
DejaVu |
» 2012-08-14 14:58:02 To nie jest to samo, ponieważ tworzysz jego kopię i to są dwa różne obiekty. |
|
SeaMonster131 Temat założony przez niniejszego użytkownika |
» 2012-08-14 15:15:37 Dzięki za pomoc. wrzucaj do vectora wskazniki |
Tak też zrobiłem i działa. Zamykam :) |
|
« 1 » |