class Main_Source : public Source<Client> { protected: Door *in, *out; Counter *counter; Cashier *cashier; Random *nb_articles_distribution; public: Main_Source((Random *intergeneration, Door *in_, Door *out_, Counter *counter_, Cashier *cashier_) : Source<Client>(intergeneration){ in=in_; out=out_; counter=counter_; cashier=cashier_; nb_articles_distribution=new Uniform(3,20, new MLCG); }; protected: bool stop_condition() { return((total_population()>=1000) || (get_time()>=20000)); }; virtual void customer_init(Client *customer) { customer->entrance_door = in; customer->exit_door = out; customer->visited_counter = counter; customer->used_cashier = cashier; customer->nb_articles = (int)floor((*nb_articles_distribution)()); }; };