Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Porównywanie zwróconego z funkcji ciągu znaków

Ostatnio zmodyfikowano 2014-01-23 13:46
Autor Wiadomość
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ę:

C/C++
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:

C/C++
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:

C/C++
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?
P-101508
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 );
P-101559
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.
P-101599
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ę?
P-101603
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 :)
P-102942
« 1 »
  Strona 1 z 1