Boost logo

Boost :

From: Daniel Frey (d.frey_at_[hidden])
Date: 2008-07-27 10:15:20


Hi,

I have a question on make_shared. Consider a class which intends to
force all instances to be handled via a shared_ptr. I used to do this by
putting the ctors into the private section and adding static
create()-methods in the public section. Example:

class X
{
private:
   X( int, double );

public:
   static shared_ptr<X> create( int i, double d )
   {
      return shared_ptr<X>( new X( i, d ) );
   }
};

Replacing the returned expression with make_shared<X>( i, d ) wouldn't
work, since it requires a public ctor.

Is there any solution to this or do I have to make a decision between
efficiency and a safe interface for X?

Regards, Daniel


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk