Boost logo

Boost Users :

From: James Hughes (JHughes_at_[hidden])
Date: 2006-03-20 09:27:06


> >
> >>
> > _______________________________________________
> > Boost-users mailing list
> > Boost-users_at_[hidden]
> > http://lists.boost.org/mailman/listinfo.cgi/boost-users
>
>
> is the following snipped what you have in mind?
>
> struct base {};
> struct derived1 : public base {};
> struct derived2 : public derived1 {};
>
> typedef boost::shared_ptr<base> base_ptr;
>
> struct monitor
> {
> void
> add( const base_ptr & _ptr)
> {
> // ...
> }
> };
>
> struct factory
> {
> factory( monitor & _monitor ) :
> monitor_(_monitor)
> {
> }
>
> template<typename T>
> boost::shared_ptr<T>
> create( void )
> {
> boost::shared_ptr<T> tmp(new T);
> monitor_.add(tmp);
> return tmp;
> }
>
> private:
> monitor & monitor_;
> };
>
> void
> foo( void )
> {
> monitor m;
> factory f(m);
> f.create<derived1>();
> f.create<derived2>();
> }
>
> -- dave
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users
>

Hi Dave,

Yes, I think that pretty much does exactly what I require. And gives me a
(almost comnpletely) generic factory class to boot!

Thanks very much!

James


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