Salve a tutti, sono uno studente del liceo e non sono un esperto di c++. Mi sto esercitando nella programmazione ad oggetti, qualcuno gentilmente potrebbe dirmi come mai il compilatore mi da errore compilando questo codice?
#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
class Parallelepipedo
{
protected:
float lunghezza, larghezza, altezza;
public:
void Assegna(float,float,float);
float Volume();
Parallelepipedo()
{
lunghezza=0;
larghezza=0;
altezza=0;
}
};
void Parallelepipedo::Assegna(float lu, float la, float a)
{
lunghezza=lu;
larghezza=la;
altezza=a;
}
float Parallelepipedo::Volume()
{
return lunghezza*larghezza*altezza;
}
class Bilancia : public Parallelepipedo
{
float pesospecifico;
public:
void Assegna(float);
float Peso();
Bilancia()
{
pesospecifico=0;
}
};
void Bilancia::Assegna(float ps)
{
pesospecifico=ps;
}
float Bilancia::Peso()
{
return lunghezza*larghezza*altezza*pesospecifico;
}
int main (void)
{
float lun, lar, alt, pesspec;
Bilancia b;
cout<<"Inserisci la base e l'altezza del rettangolo di base di un parallelepipedo: ";
cin>>lun>>lar;
cout<<"Inserisci l'altezza del parallelepipedo: ";
cin>>alt;
b.Assegna(lun, lar, alt);
cout<<"Qual e\' il peso specifico del parallelepipedo? ";
cin>>pesspec;
b.Assegna(pesspec);
cout<<"Il volume del parallelepipedo e\' "<<b.Volume()<<", il suo peso "<<b.Peso<<".\n";
system("PAUSE");
return 0;
}
In particolare mi dice che ho sbagliato il comando
b.Assegna(lun, lar, alt);
Non capisco quale sia l'errore. Il compilatore dice che dovrei mettere una sola variabile nella funzione ma l'oggetto b che fa parte della classe bilancia non dovrebbe ereditare anche il metodo della classe parallelepipedo Assegna e distinguerlo dal suo Assegna grazie all'overloading? Spero di essere stato chiaro.
Grazie mille a tutti
Ricontrollando mi sono accorto che il compilatore mi da errore anche per l'ultimo cout. Non ho idea però di quale sia l'errore.