
I am a newbie of C++ and I have some question about the shared_ptr I think the best way to explain it is with an example: /*******beginning of CValue.h*************/ #ifndef TVALUE_H #define TVALUE_H template< typename tvalue > class CValue { public: CValue( tvalue value ) : value_(value) {}; private: tvalue value_; }; #endif /****end*************/ /*****Type.h***********/ #ifndef TYPE_H #define TYPE_H #include<boost/shared_ptr.hpp> /*template< typename tvalue > struct Type{ typedef boost::shared_ptr< CValue< tvalue > > pValue; };*/ template<typename T, template <typename> class Value> struct Type { typedef boost::shared_ptr< Value<T> > pValue; }; #endif /********end************/ what if I want to make it as a composition class? by example /***************example**********/ #include "Type.h" #include "CValue.h" template<typename T> class DIP //digital image processing { public: DIP(); virtual ~DIP(); shared_ptr < Type<T, filter> >createMediumFilter(); }; template<typename T> DIP<T>::DIP() {} template<typename T> DIP<T>::~DIP() {} template<typename T> shared_ptr< Type<T, filter> > DIP<T>::createMediumFilter() { typename Type<T, filter>::pValue c(new mediumFilter< T >); return c; } /*****************end**************/ I want to create the instance of mediumFilter like this in the main function int main() { Type<matrix<double>, Composition>::pValue C(new Composition<matrix<double>
); Type<matrix<double>, CValue>::pValue D; D = C->createCValue();
cout<<"system pause"<<endl; cin.get(); } how could I fix the problems? thanks -- View this message in context: http://old.nabble.com/some-problems-about-shared_ptr-tp29674340p29674340.htm... Sent from the Boost - Users mailing list archive at Nabble.com.