[C++] Porównywanie zwróconego z funkcji ciągu znaków
Ostatnio zmodyfikowano 2014-01-23 13:46
SeaMonster131 Temat założony przez niniejszego użytkownika |
[C++] Porównywanie zwróconego z funkcji ciągu znaków » 2014-01-07 16:09:56 Mam dość dziwny problem, albo popełniłem jakiś głupi błąd. Otóż mam sobie taką funkcję: string CGUI::CDialog::getButtonClick( int k ) { for( int i = 0; i < v_buttons.size(); ++i ) if( v_buttons[ i ].isClicked( k ) ) return v_buttons[ i ].text; return ""; }
Która zwraca mi ciąg znaków np "OK", "YES" itd. Na tym etapie jest wszystko okej - funkcja zwraca poprawny tekst. Natomiast gdy chcę porównać ten tekst w ten sposób: if( dialog.getButtonClick( 1 ) == "NO" ) { }
if( dialog.getButtonClick( 1 ) == "YES" ) { }
To obojętnie na ilość warunków, zawsze wykona się ten pierwszy (w tym przypadku "NO"), resztę jakby program ignorował. Natomiast gdy zrobię już tak: string click = dialog.getButtonClick( 1 );
if( click == "YES" ) { } if( click == "NO" ) { }
To wszystko działa poprawnie. Dlaczego ten 1. sposób nie działa jak powinien? |
|
maly |
» 2014-01-08 07:03:24 Na moje oko wygląda to na mniejszy lub większy "przeciek". Spróbuj zwracać referencje na stringa, jeśli zacznie działać to wielce prawdopodobne że gdzieś wychodzisz w pozaprzestrzeń. const string & CGUI::CDialog::getButtonClick( int k ); |
|
SeaMonster131 Temat założony przez niniejszego użytkownika |
» 2014-01-08 16:10:25 Niestety jest tak samo.
Jeżeli ma to coś do rzeczy, używam TDM-GCC 4.7.1 i kompiluje program z flagą -std=c++11. |
|
maly |
» 2014-01-08 16:41:43 Myślę że c++11 niema tu znaczenia, może poprostu między pierwszym wywołaniem dialog.getButtonClick( 1 ) a drugim stan isClicked zmienia się? |
|
SeaMonster131 Temat założony przez niniejszego użytkownika |
» 2014-01-23 13:46:06 Dokładnie - mały błąd się wkradł w obsługę kliknięć przycisków. Dzięki za pomoc :) |
|
« 1 » |