Oppure

Loading
12/05/17 14:50
Djot
Salve a tutti , stavo svolgendo un esercizio sulle sottoclassi , l'esercizio consisteva nel generare una classe Conto in Banca , con opportuno costruttore e metodi , e di generare poi una sottoclasse Interessi che sommava al denaro un interesse del 2% ;
Tuttavia ci sono vari errori nella sottoclasse che non riesco a comprendere , allego qui sotto il mio codice , grazie per la pazienza :
#include <iostream>
using namespace std;

class contoBanca{
double denaro;
public:
    contoBanca(){
    denaro = 0;
    }
    void Saldo(){
    cout << denaro << endl;
    }
    void Ritira(int n){
        if(denaro != 0){
        if(n!=0 && n%10 == 0){
            denaro = denaro - n;
        }else{
            cout << "L'importo desiderato non puo' essere ritirato" << endl;
        }
        }
        else{
            cout << "Denaro insufficiente per poter ritirare" << endl;
        }
    }
    void Versa(int m){
    if(m!=0){
    denaro = denaro + m;
    }else{
    cout << "Non e' possibile versare una quantita' nulla" << endl;
     }
    }
};
class Interessi:public contoBanca{
    double interessi;
public:
    Interessi():contoBanca();
    double Inter(){
        interessi = (denaro*2)/100 + denaro; // "double contoBanca::denaro is private"
        return interessi;
    }
};
int main(){
contoBanca b1;
b1.Saldo();
b1.Versa(20);
b1.Saldo();
b1.Ritira(10);
b1.Saldo();
return 0;
}
aaa
12/05/17 15:02
lumo
L'errore dovrebbe dirti tutto: denaro è una variabile privata della classe contoBanca e quindi nessuna altra classe può accedervi.
Di solito si userebbe una coppia di metodi setter/getter, in questo caso visto che è un esercizio ti consiglio di dichiarare denaro come protected.

EDIT: visto che non modifichi denaro, in realtà lasciala private e cambia Saldo() in modo che ritorni denaro (così diventa un getter) e invece di usare denaro direttamente userai il valore dato da Saldo nella sottoclasse.
Ultima modifica effettuata da lumo 12/05/17 15:03
aaa
12/05/17 15:08
Djot
Perfetto! Grazie mille!
aaa