#include <string>
#include <stdexcept>

struct miembro_equipo {
   virtual ~miembro_equipo( ) = default;
   virtual int numero_playera( ) const = 0;
};

class entrenador : public miembro_equipo {
public:
   int numero_playera( ) const {
      return 0;
   }
};

class deportista : public miembro_equipo {
   int numero;

public:
   deportista(int n) {
      pon_playera(n);
   }

   int numero_playera( ) const {
      return numero;
   }

private:
   void pon_playera(int n) {
      if (n == 0) {
         throw std::invalid_argument("numero reservado");
      }
      numero = n;
   }
};

struct estadio {

};

struct equipo_futbol {
   std::string nombre;
   estadio* estadio_sede;
   entrenador* director_tecnico;
   deportista* jugador1;
   deportista* jugador2;
   deportista* jugador3;
};
