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

[C++] Return, kilka zmiennych

Ostatnio zmodyfikowano 2016-08-25 11:36
Autor Wiadomość
CPnHorror
Temat założony przez niniejszego użytkownika
[C++] Return, kilka zmiennych
» 2016-08-23 00:13:52
Witam otóż nie mogę znaleźć w internecie (wszak google) informacji na temat zwrócenia kilku zmiennych z funkcji nieokreślonych przy użyciu słowa kluczowego Return:

C/C++
void znajdz_item_script( string nazwa_item )
{
   
    ifstream item_czyty;
    item_czyty.open( "item/script_item.txt", ios::in );
    char znak;
    string tekst = "";
    while( !item_czyty.eof() )
    {
        znak = item_czyty.get();
        if( znak != '|' )
        {
            tekst += znak;
        } else {
            if( tekst == nazwa_item )
            {
                string nazwa, rodzaj, parametry, opis, wartosc;
                nazwa = tekst;
                tekst = "";
                int ktore = 0;
                while( znak == '\n' )
                {
                    znak = item_czyty.get();
                    if( znak == '|' )
                    {
                        if( ktore == 0 )
                        {
                            rodzaj = tekst;
                        } else if( ktore == 1 )
                        {
                            parametry = tekst;
                        } else if( ktore == 2 )
                        {
                            opis = tekst;
                        } else if( ktore == 3 )
                        {
                            wartosc = tekst;
                           
                            return nazwa, rodzaj, parametry, opis, wartosc;
                            break;
                            break;
                        }
                       
                        tekst = "";
                        ktore += 1;
                    } else {
                        tekst += znak;
                    }
                }
            } else {
                while( znak == '\n' )
                {
                    znak = item_czyty.get();
                }
               
            }
        }
       
    }
}
P-151043
pekfos
» 2016-08-23 00:34:52
Najbliższe tego, co chcesz osiągnąć, jest zwracanie std::tuple<>.
P-151045
michal11
» 2016-08-23 00:53:54
Ponieważ w tym przypadku zmienne mają jakieś swoje logiczne nazwy, lepsze byłoby opakowanie tego co w strukturę lub klasę.
P-151046
CPnHorror
Temat założony przez niniejszego użytkownika
» 2016-08-23 01:01:38
to "tuple" jest niezłe :-) chciałem obejść się bez tworzenia nowej zmiennej ale ta w sumie nie jest taka zła zaoszczędzę dzięki niej około 40 linii :-)

jakby ktoś miał jeszcze inny sposób tj. przerzucenie zmiennych z funkcji do funkcji w takowy sposób (a'la return) to proszę o info. :-)
P-151048
Gibas11
» 2016-08-23 14:45:25
Najlepiej strukturą (tuple jest bliżej, ale mało czytelny – zwłaszcza dla początkujących).

C/C++
struct Item {
    std::string nazwa;
    std::string rodzaj;
    std::string parametr;
    std::string opis;
    std::string wartosc;
};

/* ... */

Item jakasFunkcja() {
    /* ... */
    return {
        "banan",
        "bananowy",
        "-omit-frame-banana",
        "piękny banan",
        "$60"
    };
}

Używając nawiasów klamrowych możesz stworzyć strukturę ustawiając wartości kolejnych pól. Oczywiście kompilator musi wiedzieć o jaką strukturę chodzi, w tym wypadku dedukuje to na podstawie typu zwracanego przez funkcję.
P-151056
CPnHorror
Temat założony przez niniejszego użytkownika
» 2016-08-25 11:36:39
Gibas11
Jesteś Wielki !!
P-151088
« 1 »
  Strona 1 z 1