C++ warning in function

Good morning!

My function consists of 2 global variables coins and XP

In case you are wondering what this function does, I'll explain.

The function is made for after the player wins the level. When this happens, they gain XP and coins. For some reason, the program is giving me a warning on the return value XP

The function:

How can I fix this?
The warning is at return XP, coins;

An extra favor?

I don't want my game to only drop a certain amount of coins or give only 100 XP every single level. How can I change this to be random between a certain amount of numbers?

(if you answer both, i will select your explanation as the answer to this question)
Thank you

I am not including the entire program due to other possible errors that i may be fixing while awaiting the answer to this question

You are viewing a single comment. View All
Answered by xxpertHacker [earned 5 cycles]
View Answer

Currently, you are using C++'s comma operator, which is... practicially useless.

(x, y) evaluates to y, therefore, (XP, coins) == coins; you're just returning coins, not XP.

Also, XP and coins are only mutated within the scope of the function, maybe you wanted to pass by reference?

I'd suggest using a std::pair to return XP and coins at once.


But more likely, you'd want a global player struct, and you'd mutate experience and coins as globals instead.


there's an auto function type?
can you tell me more about it?


@LoveFromSkyy auto is one C++'s type deduction keywords.

I just didn't want to type out std::pair<int, int>; but that's the type that the std::make_pair return type is deduced as.

As for the auto [ experience, coins ] = ..., the autois needed.

Some references:


Wow, you're good at C++!
Honestly, thank you @xxpertHacker
Have a wonderful day!
is it ok if i ping you if i get confused later on about something?


When I am executing this, would I need to change this:

That is for if the player wins.


You're welcome, good luck.

is it ok if i ping you if i get confused later on about something?

Umm... I might be lat to respond, and there's people more experienced in C++ here, but I already have people who ping me, so sure, feel free.



The return value of LvlWin is unused, so I think you wanted to pass by reference instead?