#include <iostream>
using namespace std;
struct figura {
double pole;
};
struct prostokat : figura {
double pole;
};
struct romb : figura {
double pole;
};
struct kwadrat : romb, prostokat {
double pole;
double get_pole(){
/* tu jest problem */
cout << ((figura*)(romb*)this)->pole << endl;
cout << ((figura*)(prostokat*)this)->pole << endl;
/* to przypisanie tez nie wiadomo czy dziala dobrze */
((figura*)(romb*)this)->pole = 30;
((figura*)(prostokat*)this)->pole = 35;
/* to wyswietla sie niby poprawnie */
cout << pole << endl;
cout << romb::pole << endl;
cout << prostokat::pole << endl;
cout << ((figura*)(romb*)this)->pole << endl;
cout << ((figura*)(prostokat*)this)->pole << endl;
//return pole + romb::pole + prostokat::pole +
//((figura*)(romb*)this)->pole +
//((figura*)(prostokat*)this)->pole;
}
};
int main()
{
kwadrat obj;
obj.pole = 5;
obj.romb::pole = 10;
obj.prostokat::pole = 15;
/* to przypisuje wartosci niewiadomogdzie */
((figura)(romb)obj).pole = 20;
((figura)(prostokat)obj).pole = 25;
/* to wyswietla sie jeszcze poprawnie */
cout << "kwadrat-pole:" << obj.pole << endl;
cout << "romb-kwadrat-pole: " << obj.romb::pole << endl;
cout << "prostokat-kwadrat-pole: " << obj.prostokat::pole << endl;
cout << "figura-romb-kwadrat-pole: " << ((figura)(romb)obj).pole << endl;
cout << "figura-prostokat-kwadrat-pole: " << ((figura)(prostokat)obj).pole << endl;
/* tutaj metoda siega na poczatku do dwoch podejrzanych pol z ktorymi jest
problem */
obj.get_pole();
}
Może mi ktoś wytłumaczyć, skąd rzutowania tego typu:
((figura*)(romb*)this)->pole = 30; ??
Bo nie jestem w stanie tego zrozumieć