Come faccio a passare il valore di una variabile da una classe all'altra? (C ++)

0

Ho una classe ("Classe A", la chiameremo) che calcola il valore di una variabile privata (che possiamo chiamare numLoaves) con una funzione pubblica. Devo usare il valore di numLoaves in una funzione pubblica nella classe B.

Qual è il modo migliore e più efficace per trasmettere questo valore? Sono nuovo alla programmazione e ho cercato una soluzione per ore senza fortuna. Nota: la funzione in Classe B è nulla e deve essere in questo modo. Non posso usare variabili globali o oggetti, puntatori, funzioni di amici o classi di amici. La variabile deve essere privata.

Grazie!

    
posta user3217172 08.02.2014 - 15:25
fonte

2 risposte

2

Guarda in questo modo. Hai due oggetti e hai bisogno di un tipo di supporto per comunicare tra loro. A può andare e chiedere a B cosa ha mangiato a colazione.

A può farlo dicendo B.WhatDidYouEatForBreakfast() o più corto B.Breakfast() . La cosa bella è che non ha bisogno di andare a controllare i suoi piatti e cassonetti (quelli sono privati) ma la domanda è permessa (è pubblica). B , d'altra parte, può dire quello che vuole (probabilmente dirà frutta e verdura, mentre in realtà era chips e cola), ma è meglio che sia l'informazione che stai cercando (assicurati di ciò nel corpo del metodo).

Quindi, in pratica, devi solo avere un metodo pubblico in una delle classi con un tipo di ritorno della variabile privata. Questo metodo restituirà il valore della variabile privata. Chiunque può ora chiamare quell'oggetto e scoprire cosa sta succedendo.

    
risposta data 08.02.2014 - 16:21
fonte
0

In qualche modo questo si ridurrà alla classe A impostando il valore nella classe B.

La Classe B dovrebbe avere la propria copia privata di numLoaves e usare un setter per impostarla.

void ClassB::setNumLoaves(const NumLoaves_t& numLoaves)
{
    _numLoaves = numLoaves;
}

La classe A dovrebbe avere un metodo che aggiornerà la classe B.

void ClassA::updateClassB(ClassB& classB)
{
    classB.setNumLoaves(_numLoaves);
}

Infine, in qualunque modo siano associate la classe A e la classe B, la classe A aggiorna la classe B.

classA.updateClassB(classB);
    
risposta data 08.02.2014 - 15:43
fonte

Leggi altre domande sui tag