Oppure

Loading
29/11/09 13:37
Lego86
Salve, vorrei creare un programma che calcoli il volume di un parallelepipedo ereditando il metodo "Area()" da una classe rettangolo, in modo da poterla moltiplicare per l'altezza ed ottenere il volume. Purtroppo il dev-c++ mi dà "[Linker error] undefined reference to `Rettangolo::Rettangolo()'". Sapreste aiutarmi? grazie

------------------Rettangolo.cpp---------------------------

#include <iostream>
using namespace std;
class Rettangolo{
public:
float Lung;
float Larg;
Rettangolo();
Rettangolo(float VLung, float VLarg);
float Area(float VLung, float VLarg);
float Perimetro();

};

Rettangolo::Rettangolo(float VLung, float VLarg){
Lung=VLung;
Larg=VLarg;
}

float Rettangolo::Area(float VLung, float VLarg){
return(VLung*VLarg);
}

float Rettangolo::Perimetro(){
return(Lung*2+Larg*2);
}


----------------Paral.cpp---------------------------
#include <iostream>
#include "Rettangolo.cpp"
using namespace std;

class Paral : public Rettangolo {
public:
float Altezza;
Paral(float VLung, float VLarg, float VAltezza);
float Volume(float VLung, float VLarg, float VAltezza);
};


Paral::Paral(float VLung, float VLarg, float VAltezza){
Lung=VLung;
Larg=VLarg;
Altezza=VAltezza;
}

float Paral::Volume(float Lung, float Larg, float Altezza){
return(Rettangolo::Area(Lung,Larg)*Altezza);
}

----------------Paral_main.cpp------------------------
#include <iostream>
#include "Paral.cpp"
using namespace std;
int Lu,La,Al;
int main(){
cout<<"Lunghezza: ";
cin>>Lu;
cout<<"Larghezza: ";
cin>>La;
cout<<"Altezza: ";
cin>>Al;
Paral P1 = Paral(Lu,La,Al);
cout<<"Parallelepipedo costruito!"<<endl;
float Volume = P1.Volume(Lu,La,Al);
cout<<"Il volume del parallelepipedo e': "<<Volume<<endl;
system("PAUSE";);
return 0;
}
aaa
29/11/09 22:42
TheKaneB
semplice.

Hai dichiarato il costruttore Rettangolo() nella classe Rettangolo, ma non l'hai implementato.

Due sono le cose che puoi fare:
1- Implementa il costruttore, anche vuoto...

Rettangolo::Rettangolo()
{

}


2- Elimina la dichiarazione del costruttore dalla classe. In questo modo userà un costruttore vuoto di default che non fa nulla.


aaa
30/11/09 8:13
Lego86
Risolto!! Se cancellavo il metodo mi dava ancora un altro errore, ma aggiungendoci quello vuoto funziona perfettamente, grazie mille!
Ultima modifica effettuata da Lego86 30/11/09 8:16
aaa