mam do zrobienia takie zadanie: sprawdzić możliwość wykorzystania metod wirtualnych na kolekcji vector obiektów oraz vector wskaźników na obiekty. Z tym drugim sobie poradziłam, niestety nie wiem jak zrobić to zadanie bez wskaźników.
#include <iostream>
#include <vector>
using namespace std;
class bryla
{
public:
virtual float objetosc() {
return 0;
}
};
class szescian : public bryla
{
private:
float a;
public:
szescian(float a) {
this->a = a;
}
float objetosc() {
return (a * a * a);
}
};
class prostopadloscian : public bryla
{
private:
float a, b, c;
public:
prostopadloscian(float a, float b, float c) {
this->a = a;
this->b = b;
this->c = c;
}
float objetosc() {
return a * b * c;
}
};
class stozek : public bryla
{
private:
float r, h;
const float pi = 3.14;
public:
stozek(float r, float h) {
this->r = r;
this->h = h;
}
float objetosc() {
return ((pi * r * r * h) / 3);
}
};
int main()
{
vector <bryla*> b;
b.push_back(new szescian(4));
b.push_back(new prostopadloscian(8,2,7));
b.push_back(new stozek(3, 6));
for (int i = 0; i < 3; i++)
cout << b[i]->objetosc() << endl;
return 0;
}
to jest z uzyciem wskaźników.
a tu probowlam zrobic bez:
int main()
{
vector <bryla> b;
b.push_back(szescian(4));
b.push_back(prostopadloscian(8, 2, 7));
b.push_back(stozek(3, 6));
for (int i = 0; i < 3; i++)
{
cout << b[i].objetosc() << endl;
}
return 0;
}
wyswietla mi na kosoli same 0, probowalam cos z iteratorami ale tez nie dziala :(