Boost logo

Boost Users :

Subject: [Boost-users] class API return a const&, optional, shared_ptr
From: Hicham Mouline (hicham_at_[hidden])
Date: 2008-11-25 07:15:23


hello,

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<const B&> 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,


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net