Не прибавляется опыт

Потихоньку изучаю C++, решил написать маленькую консольную мини-игру. Задался вопросом, не хочет увеличиваться опыт после боя, в чем дело?

#include <iostream>
#include <windows.h>
using namespace std;

class hero
{
public:
    int hp;
    int damage;
    int exp;
    int level;
    int gold;
    int swordDamage;
    void levelBoost()
    {
        int expBoost = 100;
        if (exp >= expBoost)
        {
            level++;
            expBoost * 2;
            hp * 1.125; damage * 1.125; 
        }
    }
};

void dayNight()
{
        int change = 1;
        system("color E0");
        if (change % 2 == 0)
        {
            system("color 1");
            change = 1;

        }
        change++;
        system("cls");
}

void battle(int damageCharacter, int swordDamageChrctr, int hpCharacter,
            int damageEnemy,int swordDamageEnemy,int hpEnemy, int expCharacter, int expEnemy)
{
    cout << "Бой начинается!" << endl;
    while (hpCharacter >= 0 || hpEnemy >= 0)
    {
        string str;
        if (hpCharacter <= 0)
        {
            cout << "Проигрыш" << endl;
            break;
        }
        else if (hpEnemy <= 0)
        {
            cout << "Победа!" << endl;
            expCharacter += 125;
            break;
        } 
        cout << "Наносим удар по врагу." << endl;
        hpEnemy -= (damageCharacter + swordDamageChrctr) * (rand() % 3);
        cout << "Удар нанесен." << hpEnemy  << " " << hpCharacter << endl;
        expCharacter += 2;
        cin >> str;
             // 1 - в корпус * 2, 2 - по рукам * 1, 3 - голова * 3
        cout << "Враг наносит удар." << endl;
        hpCharacter -= (damageEnemy + swordDamageEnemy) * (rand() % 3);
        expEnemy += 2;
    }
    expCharacter += 100;
}



int main()
{
    setlocale(LC_ALL, "Russian");
    dayNight();
    hero character = { 100, 10, 1, 1, 0, 5 };
    hero enemy = { 50, 6, 0, 1, 0, 5 };
    battle(character.damage, character.swordDamage, character.hp,
        enemy.damage, enemy.swordDamage, enemy.hp, character.exp, enemy.exp);
    //dayNight();
    //character.exp += 100;
    character.levelBoost();
    cout << character.level << endl << character.exp << endl;
    
    string str;
    cin >> str;
    return main();
}

Ответы (1 шт):

Автор решения: HolyBlackCat

По умолчанию параметры передаются в функции "по значению" - то есть копируются, и любые изменения копии не влияют на оригинал.

Чтобы это исправить, нужно передавать "по ссылке", вот так: int &expCharacter.

→ Ссылка