Korzystając z kompozycji stworzyłem takie figury jak trójkąt i czworokąt. Teraz mam utworzyć nową klasę która będzie prywatną kolekcją(tablica,lista) figur - trójkąt i czworokątów.W tej klasie ma być metoda, która służy do dodawania nowych figur do kolekcji.Coś próbowałem ale nie wiem czy to tak ma być.Stworzyłęm oddzielną tablicę dla Trójkątów i tak samo bym zrobił z Czworokątami. Jak ją mogę utworzyć ? Mój kod:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
class Punkt
{
int x, y;
public:
Punkt()
{
x = y = 0;
}
Punkt(int x, int y)
{
this->x=x;
this->y=y;
}
void przesun(int dx, int dy)
{
x+=dx;
y+=dy;
}
};
class Linia
{
Punkt *p1, *p2;
public:
Linia()
{
p1 = new Punkt();
p2 = new Punkt(1,1);
}
Linia(Punkt &p1, Punkt &p2)
{
this->p1 = new Punkt(p1);
this->p2 = new Punkt(p2);
}
Linia(const Linia &l)
{
this->p1 = l.p1;
this->p2 = l.p2;
}
void przesun(int dx, int dy)
{
p1->przesun(dx,dy);
p2->przesun(dx,dy);
}
~Linia()
{
delete p1;
delete p2;
}
};
class Trojkat
{
Linia *l1, *l2, *l3;
public:
Trojkat()
{
this->l1 = new Linia();
this->l2 = new Linia();
this->l3 = new Linia();
}
Trojkat(Punkt &a, Punkt &b, Punkt &c)
{
l1 = new Linia(a,b);
l2 = new Linia(b,c);
l3 = new Linia(c,a);
}
Trojkat(const Trojkat &trojkat)
{
this->l1 = trojkat.l1;
this->l2 = trojkat.l2;
this->l3 = trojkat.l3;
}
void przesun(int dx, int dy)
{
l1->przesun(dx, dy);
l2->przesun(dx, dy);
l3->przesun(dx, dy);
}
~Trojkat()
{
delete l1;
delete l2;
delete l3;
}
};
class Czworokat
{
Linia *l1, *l2, *l3, *l4;
public:
Czworokat()
{
this->l1 = new Linia();
this->l2 = new Linia();
this->l3 = new Linia();
this->l4 = new Linia();
}
Czworokat(Punkt &a, Punkt &b, Punkt &c, Punkt &d)
{
this->l1 = new Linia(a, b);
this->l2 = new Linia(b, c);
this->l3 = new Linia(c, d);
this->l4 = new Linia(d, a);
}
Czworokat(const Czworokat &czworokat)
{
this->l1 = czworokat.l1;
this->l2 = czworokat.l2;
this->l3 = czworokat.l3;
this->l4 = czworokat.l4;
}
void przesun(int dx, int dy)
{
l1->przesun(dx,dy);
l2->przesun(dx,dy);
l3->przesun(dx,dy);
l4->przesun(dx,dy);
}
~Czworokat()
{
delete l1;
delete l2;
delete l3;
delete l4;
}
};
class Obraz
{
Trojkat *TablicaTrojkat = new Trojkat [20];
int licznik = 0;
public:
void DodajTrojkat(Trojkat trojkat)
{
TablicaTrojkat[licznik++] = trojkat;
}
};
int main()
{
Punkt *pierwszy = new Punkt(1,1);
Punkt *drugi = new Punkt(2,2);
Punkt *trzeci = new Punkt(4,8);
Punkt *czwarty = new Punkt (15,17);
Linia *l1 = new Linia(*pierwszy,*drugi);
l1->przesun(4,4);
Trojkat *trojkat = new Trojkat(*pierwszy,*drugi,*trzeci);
Czworokat *czworokat = new Czworokat(*pierwszy,*drugi,*trzeci,*czwarty);
return 0;
}