This seems a little pointless. I mean you already have the agent so why go to the cluster to get it? 

Generally speaking, I think the leave, is_member and operator[]  functions should all take a string as parameter instead of the bidding agent object. That also means that the join function should probably get the name from a parameter instead of the serviceName(). Not super important.