Re: function returning reference to empty object
On May 17, 10:48 am, Zeppe
<zeppe@.remove.all.this.long.comment.email.it> wrote:
Jim Langston wrote:
I used throw as thus:
CPlayer& FindPlayer( const SOCKET Socket )
{
// Get a reference in the map for this player
map_player::iterator it = World.ConnectedPlayers.find( Socket );
if ( it != World.ConnectedPlayers.end() )
return (*it).second;
else
throw 0;
}
Just a note, throwing 0 is a bad habit.
And how. Does he expect the caller to use a "catch ( int )"?
What I'd like to know is what's wrong with simply:
CPlayer* FindPlayer( const SOCKET Socket )
{
// Get a reference in the map for this player
map_player::iterator it =
World.ConnectedPlayers.find( Socket );
return it == World.ConnectedPlayers.end()
? &it->second
: NULL ;
}
It's short and simple, and about the easiest solution to
understand.
Create a suitable exception class, with some string that gives
you the explanation of the error, and throw that.
If you have to throw. Throwing should generally be reserved for
exceptional cases.
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orient=E9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34