Problemi overloading programmazione ad oggetti in c++

di il
1 risposte

Problemi overloading programmazione ad oggetti in c++

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.

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte