Visibilità attributi in una classe e uso in una funzione

di il
3 risposte

Visibilità attributi in una classe e uso in una funzione

Buongiorno a tutti, chiedo un piccolo aiuto.
Nel programma che sto testando, ho creato una classe per gestire i dati di una squadra, e uso una funzione per simulare una partita. Alla funzione (partita) passo i due oggetti squadra e nella funzione dovrebbero essere aggiornate le proprietà di ogni squadra.
Quello che mi succede però e che i dati sono correttamente aggiornati finchè sono nella funzione partita, ma alla sua uscita (nel main) quegli aggiornamento sono spariti.
Ipotizzo un problema con gli scope, ma non capisco dove possa essere.
Qualcuno può darmi una dritta?

Grazie.
Di seguito, il codice che ho usato.
#include <stdlib.h>
#include <iostream>

using namespace std;

class Squadra{
public:
    string nome;
    int v,p,s;
    int gf,gs;
    Squadra(string n);
    void status();
};

void partita(Squadra s1, Squadra s2);

int main()
{
    Squadra i("Inter"),m("Milan");

    partita(i,m);
    cout << "Dopo partita:" << endl;
    i.status();
    m.status();
    return 0;
}

void partita(Squadra s1, Squadra s2)
{
    int g1, g2;

    g1=2;
    g2=3;
    cout << s1.nome << " " << g1 << "    " << s2.nome << " " << g2 << endl;
    s1.gf=s1.gf+g1;    s1.gs=s1.gs+g2;
    s2.gf=s2.gf+g2;    s2.gs=s2.gs+g1;
    if(g1>g2)
    {
        s1.v++;    s2.s++;

    }else if(g1==g2)
    {
        s1.p++;    s2.p++;

    }else
    {
        s2.v++;    s1.s++;
    }
 s1.status();
 s2.status();

}

Squadra::Squadra(string n)
{
    nome=n;
    v=0; p=0; s=0; gf=0; gs=0;
}

void Squadra::status()
{
    cout << nome << ": " ;
    cout << "Giocate: " << v+p+s ;
    cout << " V: " << v << " - P: " << p << " - S: " << s << " - Fatti: " << gf << " - Subiti: " << gs << endl;
}

3 Risposte

Devi accedere o registrarti per scrivere nel forum
3 risposte