#include <iostream>
#include <cmath>
using namespace std;
class figura_plaska
{
public:
virtual void podaj();
virtual void wypisz();
virtual void pole();
virtual void obwod();
};
class kwadrat :public figura_plaska
{
float a,b;
public:
virtual void podaj()
{
cout<<"Podaj dlugosc boku a kwadratu: "<<endl;
cin>>a;
cout<<"Podaj dlugosc boku b kwadratu: "<<endl;
cin>>b;
}
virtual void wypisz()
{
cout<<"Twoj kwadrat ma wymiary: "<<a<<" x "<<b<<endl;
}
virtual void pole()
{
cout<<"Pole twojego kwadratu wynosi: "<<a*b<<endl;
}
virtual void obwod()
{
cout<<"Obwod twojego kwadratu wynosi: "<<2*a+2*b<<endl;
}
};
class prostokat :public figura_plaska
{
float a,b;
public:
virtual void podaj()
{
cout<<"Podaj dlugosc boku a prostokata: "<<endl;
cin>>a;
cout<<"Podaj dlugosc boku b prostokata: "<<endl;
cin>>b;
}
virtual void wypisz()
{
cout<<"Twoj prostokat ma wymiary: "<<a<<" x "<<b<<endl;
}
virtual void pole()
{
cout<<"Pole twojego prostokata wynosi: "<<a*b<<endl;
}
virtual void obwod()
{
cout<<"Obwod twojego prostokata wynosi: "<<2*a+2*b<<endl;
}
};
class figura_przestrzenna
{
public:
virtual void objetosc();
virtual void podaj();
virtual void wypisz();
};
class graniastoslup_czworokatny_prosty :public figura_przestrzenna
{
float a,b,h;
public:
virtual void podaj()
{
cout<<"Podaj dlugosc boku a podstawy graniastoslupa: "<<endl;
cin>>a;
cout<<"Podaj dlugosc boku b podstawy graniastoslupa: "<<endl;
cin>>b;
cout<<"Podaj wysokosc h graniastoslupa: "<<endl;
cin>>h;
}
virtual void wypisz()
{
cout<<"Twoj graniastoslup ma podstawe o wymiarach: "<<a<<" x "<<b<<" oraz o wysokosci: "<<h<<endl;
}
virtual void objetosc()
{
cout<<"Objetosc graniastoslupa wynosi: "<<a*b*h<<endl;
}
};
int main()
{
kwadrat A;
prostokat B;
graniastoslup_czworokatny_prosty C;
figura_plaska *wsk1;
wsk1=&A;
wsk1->podaj();
wsk1->wypisz();
wsk1->pole();
wsk1->obwod();
wsk1=&B;
wsk1->podaj();
wsk1->wypisz();
wsk1->pole();
wsk1->obwod();
figura_przestrzenna *wsk2;
wsk2=&C;
wsk2->podaj();
wsk2->wypisz();
wsk2->objetosc();
return 0;
}
Utwórz klasę opisującą ogólne właściwości płaskiej figury geometrycznej:
(a) zdefiniuj wirtualne funkcje składowe liczące: pole, obwód oraz wypisujące informacje o figurze,
(b) utwórz klasy pochodne z niej (np. prostokąt, kwadrat) i zredefiniuj wirtualne funkcje składowe (pole, obwód),
(c) utwórz na podstawie (a) klasę opisującą figurę przestrzenną (objętość).
Podczas kompilacji mam takie errory:
C:\Users\User\AppData\Local\Temp\ccOVZPlZ.o klasa wirtualna.cpp:(.rdata$.refptr._ZTV19figura_przestrzenna[.refptr._ZTV19figura_przestrzenna]+0x0): undefined reference to `vtable for figura_przestrzenna'
C:\Users\User\AppData\Local\Temp\ccOVZPlZ.o klasa wirtualna.cpp:(.rdata$.refptr._ZTV13figura_plaska[.refptr._ZTV13figura_plaska]+0x0): undefined reference to `vtable for figura_plaska'
Nie mam pojęcia co mogłoby być tutaj źle :/