Cześć, nie możesz dać czegoś takiego w tym przypadku:
Ksztalt *wsk = ....
Wynika to z tego, ze klasa Ksztalt ma tylko metodę wirtualną i nic więcej, a co za tym idzie jest klasa abstrakcyjną. Nie można tworzyć obiektów klasy abstrakcyjej.
Tutaj jest działający poprawiony kod:)
#include <iostream>
using namespace std;
class Ksztalt
{
virtual void oblicz_pole()=0;
//czysta funkcja wirtalna
};
class Kolo :public Ksztalt
{
float r;
public:
Kolo(float x)
{
r = x;
}
virtual void oblicz_pole()
{
cout<<"Pole kola :"<<3.14*r*r<<endl;
}
};
////////////////////////////////////
class Kwadrat :public Ksztalt
{
float a;
public:
Kwadrat(float x)
{
a = x;
}
virtual void oblicz_pole()
{
cout<<"Pole kwadratu:"<<a*a<<endl;
}
};
int main()
{
Kolo k1(1);
Kwadrat kw(2);
Kolo *wsk;
wsk = &k1;
wsk -> oblicz_pole();
Kwadrat *wsk1;
wsk1 = &kw;
wsk1 -> oblicz_pole();
return 0;
}
Pozdrawiam:)
@EDIT
W komentarzu poprawne roziazanie problemu:)