Mam poniższy kod programu. O ile się wszystko kompiluje i nawet mogę podać wymiary boków to jednak gdy poda pole i obwód program staje i nie chce się wyłączyć. Na moje oko wygląda jak źle działający destruktor ale nie wiem jak mam to poprawić
#include <iostream>
//deklaracja klasy podstawoej
class Figura
{
public:
Figura(int boki);
void obwod(double ob);
void pole (double pole);
~Figura();
protected:
double *boki;
};
Figura::Figura(int boki)
{
this->boki= new double[boki-1];
}
Figura::~Figura()
{
delete[] this->boki;
boki=NULL;
}
void Figura::obwod(double ob)
{
std::cout<<"Obówd wynosi: "<<ob<<" .\n";
}
void Figura::pole(double pole)
{
std::cout<<"Pole wynosi: "<<pole<<" .\n";
}
class Prostokad:public Figura
{
public:
Prostokad(int bok);
void pole();
void obwod();
~Prostokad();
};
Prostokad::Prostokad(int bok):Figura(bok)
{
std::cout<<"Podaj wymiary bokow:";
std::cin>>boki[0];
std::cin>>boki[1];
}
Prostokad::~Prostokad()
{
Figura::~Figura();
}
void Prostokad::pole()
{
Figura::pole(boki[0]*boki[1]);
}
void Prostokad::obwod()
{
Figura::obwod(2*(boki[0]+boki[1]));
}
int _tmain(int argc, _TCHAR* argv[])
{
Prostokad p(2);
p.obwod();
p.pole();
return 0;
}