#include <iostream>
#include <cstring>
using namespace std;
class Figura{
char * nazwa;
public:
Figura(char *n){
nazwa=new char[strlen(n)+1];
strcpy(nazwa, n);
}
void wypisz(){
cout<<"Figura = "<<nazwa<<endl;
}
virtual void obwod()=0; //stworzenie funkcji wirtualnej
int _obwod;
};
class Prostokat : public Figura
{
int a,b;
public:
Prostokat(char *n, int _a, int _b)
:Figura(n){
a = _a;
b = _b;
}
void obwod(); //obliczanie obwodu bez zwracania
friend ostream& operator<< (ostream& out, Prostokat& punkt);
};
void Prostokat::obwod() //obliczanie obwodu bez zwracania
{
_obwod = 2*a+2*b;
}
ostream& operator<< (ostream& out, Prostokat& punkt) //przeciazenie wyswietlania obiektu
{
out << "Wartosci prostokata: " << punkt.a << " " << punkt.b << " " << punkt._obwod << endl;
return out;
}
class Bryla{
char * kolor;
public:
Bryla(char *k){
kolor=new char[strlen(k)+1];
strcpy(kolor,k);
}
};
class Kula{
double r;
public:
Kula(double _r){
r=_r;
}
double objetosc(){
return 4.0/3*3.14*r*r;
}
};
class Kwadrat{
double a;
public:
Kwadrat(double _a){
a=_a;
}
double dlugosc(){
return 4*a;
}
void wypisz(){
cout<<"a="<<a<<" ";
}
};
class Kolo :Figura //stworzenie dziedziczenia z klasy Figura
{
protected:
double r;
public:
Kolo(double _r, char *n)
:Figura(n)
{
r=_r;
}
double pole(){
return 3.14*r*r;
}
double dlugosc(){
return 3.14*2*r;
}
void obwod();
void wypisz()
{
Figura::wypisz();
}
};
void Kolo::obwod()
{
}
int main()
{
Figura *figurki[3];
Prostokat p1("Prostokat", 5, 7);
Kolo k1(2,"Kolo");
figurki[0] = &p1;
figurki[1] = &k1;
/*
Kolo k1(3, "nazwa");
k1.wypisz();
Prostokat p1("prosto", 5, 6);
p1.wypisz();
p1.obwod();
cout << endl;
cout << p1;
*/
return 0;
}
||=== Build: Debug in kolokwium 2 konstruktor (compiler: GNU GCC Compiler) ===|
D:\kolokwium 2 konstruktor\main.cpp||In function 'int main()':|
D:\kolokwium 2 konstruktor\main.cpp|111|warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]|
D:\kolokwium 2 konstruktor\main.cpp|112|warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]|
D:\kolokwium 2 konstruktor\main.cpp|114|error: 'Figura' is an inaccessible base of 'Kolo'|
||=== Build failed: 1 error(s), 2 warning(s) (0 minute(s), 0 second(s)) ===|
Czemu przy dodaniu p1 do tablicy jest wszystko ok a przy k1 juz nie i jak dodac do tej tablicy obiekt Figury jesli jest abstrakcyjna klasa?