Zwracanie argumentu klasy

0

Witam ma taki problem z klasa. Mianowicie w osobnym pliku klasy (*.h i *.cpp) mam metodę payCash i teraz w main mam int buget który ma określoną wartość. Metoda payCash zwraca stringa a jej argumenty to int budget. std::stringpayCash(int budget) i teraz moje pytanie jak mogę wyjąć ten budget z metody bo sama metoda nie zwraca int tylko stringa w którym nie będzie tej wartości budget. W stringu znajdą się inne wartości. A ja potrzebuje by ten int bugdet który jest zadeklarowany w main się zmniejszył o jakąś liczbę ale nie wiem jak go potem wynieść poza metodę.

3

Nie wiem czy dobrze rozumiem o co pytasz. Chcesz zwrócić więcej niż jedną wartość z funkcji? Jeśli tak, to użyj std::pair/std::tuple albo przyjmij parametr przez referencję/wskaźnik:

tuple<string, int> foo()
{
    return {"answer", 42};
}
string bar(int& ans)
{
    ans = 42;
    return "answer";
}

Użycie :

auto [s, a] = foo(); // C++17
string s;
int a;
auto tup = foo();
s = get<0>(tup); // albo get<string>(tup) jeśli tuple ma tylko jeden element tego typu
a = get<1>(tup); // albo get<int>(tup) jeśli tuple ma tylko jeden element tego typu
int a;
string s = bar(a);

edit: albo jeszcze lepiej, zdefiniuj nowy zwracany typ, dzięki czemu zyskasz na czytelności:

auto baz()
{
    struct result{ string message; int code; };
    return result{"answer", 42};
}

//...
auto a = baz();
cout << a.code << ", " << a.message << '\n';

Ew. poza funkcją:

struct qux_result{ string message; int code; };
qux_result qux()
{
    return {"answer", 42};
}

//...
auto a = baz();
cout << a.code << ", " << a.message << '\n';

1 użytkowników online, w tym zalogowanych: 0, gości: 1