Array di oggetti

di il
9 risposte

Array di oggetti

Salve a tutti

sto cercando di implementare una classe di squadre (di calcio o pallacanestro ecc)

il mio dubbio è su come indicizzare le squadre, ovvero gli ogetti di questa classe

ovvero inizializzare un vettore che contiene gli oggetti

ad esempio


class team{
public:
team(string,int, int);
private:
//attributi..

};

const int N=16

team** t;
t = new team*[N];
t[0]=team("squadra1",0,0);
t[1]=team("squadra2",0,0);
t[2]=team("squadra3",0,0);

t[15]=team("squadra16",0,0);


//ecc

il problema è che sugli elementi di t non riesco ad applicare le funzioni di classe
, visto che t non fa parte della classe.

come posso risolvere il problema?

9 Risposte

  • Re: Array di oggetti

    Non ho capito il problema ... le singole istanze sono t[0], t[1] ... non devi lavorare su t ...
  • Re: Array di oggetti

    Ho risolto così

    anziche inizializzare un doppio puntatore ho inizializzato un array di oggetti di classe team
    
    team t[N];
    
    ho inizializzato le squadre
    
    team team1("squadra1",0,0);
    team team2("squadra2",0,0);
    .
    .
    team team16("squadra16",0,0);
    
    e poi ho usato il costruttore copia per assegnare gli oggetti all'array
    
    t[0]=team1;
    t[1]=team2;
    .
    .
    
    t[15]=team16;
    
  • Re: Array di oggetti

    oregon ha scritto:


    Non ho capito il problema ... le singole istanze sono t[0], t[1] ... non devi lavorare su t ...
    l'obiettivo è indicizzare gli oggetti, cioè lavorare con t

    la comodità è quella di poter chiamare le funzioni di classe in questo modo

    t.funzione_di_classe();
  • Re: Array di oggetti

    Perché "comodità" ?

    Nel primo caso le chiamavi con

    t[0]->funzione_di_classe();

    Non vedo problemi ...
  • Re: Array di oggetti

    Mi spiego meglio

    poniamo il caso che non abbia un array di oggetti ma abbia semplicemente istanziato un
    certo numero di oggetti della classe team

    team t1,t2,t3, t4 ......tN;

    volendo usare una funzione di classe su tutti gli oggetti dovrei fare

    t1.funzione();
    t2.funzione();
    t3.funzione();
    t4.funzione();
    .
    .
    tN.funzione();

    invece avendo un array t che contiene gli oggetti potrei scrivere

    for (i=0;i<N;i++)
    t.funzione();

    risparmiando un bel pò di righe di codice
  • Re: Array di oggetti

    Ti eri spiegato ma forse non hai compreso quello che ti ho scritto.

    Nel tuo primo post, quello con il vettore di puntatori a team, hai scritto

    "il problema è che sugli elementi di t non riesco ad applicare le funzioni di classe"

    mentre io ti ho scritto che non era così.
  • Re: Array di oggetti

    Ok

    quindi, se ho capito bene, usando il doppio puntatore (come nel primo codice che ho postato)

    basta fare così (supponendo che il puntatore sia p)
    
    for (i=0;i<N;i++)
      p[i]->funzione();
    
  • Re: Array di oggetti

    Sì ... come ti ho scritto e come si fa in C/C++.

    Studia l'operatore ->
  • Re: Array di oggetti

    Okay

    grazie per la risposta
Devi accedere o registrarti per scrivere nel forum
9 risposte