#include <iostream>
#include <vector>
class Punto2D
{
public:
Punto2D(int x, int y);
void setX(int x);
void setY(int y);
int getX() const;
int getY()const;
private:
int x;
int y;
};
class Poligono2D
{
public:
Poligono2D(int x, int y);
void imprimeVertices();
void agreagarVertice(int x, int y);
Poligono2D operator=(const Poligono2D& p);
private:
std::vector<Punto2D> vertices;
};
Punto2D::Punto2D(int x, int y)
: x(x)
, y(y)
{
}
void Punto2D::setX(int x)
{
x = x;
}
void Punto2D::setY(int y)
{
y = y;
}
int Punto2D::getX() const
{
return x;
}
int Punto2D::getY() const
{
return y;
}
Poligono2D::Poligono2D(int x, int y)
{
vertices.push_back(Punto2D(x, y));
}
void Poligono2D::imprimeVertices()
{
for (size_t i = 0; i < vertices.size(); i++)
{
std::cout << "(" << vertices[i].getX() << ", " << vertices[i].getY() << ") ";
}
}
void Poligono2D::agreagarVertice(int x, int y)
{
this->vertices.push_back(Punto2D(x, y));
}
Poligono2D Poligono2D::operator=(const Poligono2D& p)
{
this->vertices = p.vertices;
return *this;
}
int main()
{
Poligono2D p1(5, 2);
p1.agreagarVertice(4, 3);
std::cout << "\np1: ";
p1.imprimeVertices();
Poligono2D p2(6, 3);
std::cout << "\np2: ";
p2.imprimeVertices();
std::cout << "\nDespues de p2 = p1: ";
p2 = p1;
p2.imprimeVertices();
std::cout << std::endl;
return 0;
}