#ifndef MANAGER_HH
#define MANAGER_HH

#include <string>
#include <iostream>
#include <set>
#include "Employee.hh"

using namespace std ;

class Manager : public Employee {

public:
	Manager(const char* name, double salary) : Employee(name, salary) {}

	void businessCard( ostream& os = cout) const {
		Employee::businessCard( os );
		os	<< "   +----------+  " << endl
			<< "   Subordinates " << endl
			<< "   +----------+  " << endl;

		for ( auto iter = _subordinates.begin() ; iter != _subordinates.end(); iter++ ) {
			os << "    - " << (*iter)->name() << endl;
		}

		os	<< "   +----------+  " << endl;
	}

	void addSubordinate ( Employee& empl ) {
		_subordinates.insert( &empl );
	}
	const set<Employee*>& listOfSubordinates() const {
		return _subordinates;
	}	
  
private:
  string _name ;
  double _salary ;
  set<Employee*> _subordinates ;// subordinates is an unordered collection of unique people so set is usefull enough

} ;

#endif
