Oppure

Loading
14/05/17 17:17
Djot
Salve a tutti , stavo svolgendo un esercizio sulle classi , il comando era il seguente :

"Definire una classe counter che contiene un intero. La classe ha un costruttore
che inizializza il counter a 0 e i seguenti metodi:
(a) un metodo void inc() che incrementa di 1 il contatore;
(b) un metodo int read() che restituisce il valore del contatore;
Scrivere una funzione esterna alla classe che dato un contatore di valore n ne restituisce
un altro con valore n-1 se n>0, oppure con valore 0 se n=0."

Ora , dopo aver definito la classe Counter non so come definire la funzione esterna , potete darmi una mano? Allego qui sotto il codice della relativa classe , grazie mille.

class Counter{
int val;
public:
    Counter(){
    val = 0;
    }
    void Inc(){
    val++;
    }
    int Read(){
    return val;
    }
};

aaa
14/05/17 18:54
Perché non ci provi e ci dai un tuo esempio di codice?

Hai scritto la classe e non tenti neppure di scrivere la funzione?
14/05/17 20:22
AldoBaldo
Cosa si intende per "funzione esterna"? E' un'espressione che non ho mai incontrato in precedenza.
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
14/05/17 20:23
Intende dire che non sia un metodo della classe
14/05/17 20:28
AldoBaldo
Allora è una funzione comunissima, no? Diciamo una funzione "normale"?
Dove starebbe quindi la difficoltà? Non capisco.
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
14/05/17 20:37
Mah ... forse il fatto che deve interagire con la classe ...

Magari si spiegherà meglio ...
14/05/17 20:41
AldoBaldo
Tutt'al più varrebbe la pena rilevare che la consegna è ambigua:

Scrivere una funzione esterna alla classe che dato un contatore di valore n ne restituisce un altro con valore n-1 se n>0, oppure con valore 0 se n=0.

Parrebbe di potersela cavare con questo...

int decrementa_contatore( int contatore ) {
    return contatore>0 ? contatore-1 : 0;
}


...però il testo della consegna non chiarisce come deve comportarsi la funzione se n<0, quindi decrementa_contatore(), così com'è, potrebbe non andar bene.
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
14/05/17 20:57
Ma no ... non hai usato affatto la classe ...

Quando parla di "contatore" intende una istanza di classe Counter

Altrimenti perché avrebbe scritto quel codice?
Ultima modifica effettuata da 14/05/17 21:01