Re: [Boost-users] class API return a const&, optional, shared_ptr

I see you have three nice options here, 1. Return a shared_ptr. 2. Return a reference and throw exception for invalid indexes. 3. Return an optional. I think all three of them are nice and safe. emre
I have a class A that holds a container of objects of type B indexed by int for e.g.
Typically, I have a function of A
class A { public: const B& getB(int <index> ) const; private: std::map< int, shared_ptr<B> > listOfBs_; };
The implementation of getB could be
const B& A::getB(int <index> ) const { //what to do if index not found }
A number of solutions I think of:
1. boost::optional
getB(int <index> ) const { } 2. change signature to const B* getB(int <index> ) const
3. Define a static const B notFoundB; const B& A::getB(int <index> ) const returns notFoundB when not found and have API users compare return value with notFoundB
I suppose the cheapest in overhead/performance is 2... optional must have some time overhead?
Are there advised solutions? Favourites in terms of style?
Regards,
participants (1)
-
Emre Turkay