#include "iostream" using namespace std; class Poligono{ protected: int base,altezza; public: Poligono(int b, int a){ base=b; altezza=a; } int area(){ return 0; } }; class Rettangolo:public Poligono{ public: Rettangolo(int b,int a){ base=b; altezza=a; } int area(){ return base*altezza; } }; class Triangolo:public Poligono{ public: Triangolo(int b, int a){ base=b; altezza=a; } int area(){ return base*altezza/2; } }; void main(){ Rettangolo mioRettangolo(3,4); Triangolo mioTriangolo(3,4); Poligono mioPoligono(3,4); cout << mioRettangolo.area() << endl; cout << mioTriangolo.area() << endl; cout << mioPoligono.area() << endl; getchar(); }
1>------ Inizio compilazione: Progetto: test1, Configurazione: Debug Win32 ------ 1> foglio.cpp 1>c:\users\antonello\documents\visual studio 2010\projects\test1\test1\foglio.cpp(20): error C2512: 'Poligono': non è disponibile alcun costruttore predefinito appropriato 1>c:\users\antonello\documents\visual studio 2010\projects\test1\test1\foglio.cpp(31): error C2512: 'Poligono': non è disponibile alcun costruttore predefinito appropriato 1>c:\users\antonello\documents\visual studio 2010\projects\test1\test1\foglio.cpp(49): error C2065: 'mioPoligono': identificatore non dichiarato 1>c:\users\antonello\documents\visual studio 2010\projects\test1\test1\foglio.cpp(49): error C2228: l'elemento a sinistra di '.area' deve avere una classe, struttura o unione 1> il tipo è ''unknown-type'' ========== Compilazione: 0 completate, 1 non riuscite, 0 aggiornate, 0 ignorate ==========Ecco: non è disponibile alcun costruttore predefinito appropriato. Manca il costruttore di default della classe base, che nel momento in cui io creo un altro costruttore non viene più sottinteso ma deve essere esplicitamente dichiarato.
Ovvio all'errore:
#include "iostream"
using namespace std;
class Poligono{
protected:
int base,altezza;
public:
Poligono(){}
Poligono(int b, int a){
base=b;
altezza=a;
}
int area(){
return 0;
}
};
class Rettangolo:public Poligono{
public:
Rettangolo(int b,int a){
base=b;
altezza=a;
}
int area(){
return base*altezza;
}
};
class Triangolo:public Poligono{
public:
Triangolo(int b, int a){
base=b;
altezza=a;
}
int area(){
return base*altezza/2;
}
};
void main(){
Rettangolo mioRettangolo(3,4);
Triangolo mioTriangolo(3,4);
Poligono mioPoligono(3,4);
cout << mioRettangolo.area() << endl;
cout << mioTriangolo.area() << endl;
cout << mioPoligono.area() << endl;
getchar();
}
E proviamo di nuovo:
12 6 0
Nessun commento:
Posta un commento