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ę.
0
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';