help-gplusplus
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

problem faced in creation of a vector of pointers using STL


From: novice
Subject: problem faced in creation of a vector of pointers using STL
Date: 7 Apr 2006 13:50:51 -0700
User-agent: G2/0.2

Using  STL I wanted to create a vector of pointers.For this purpose i
have defined a class thin_ptr as follows:
//thin_ptr
template <typename T ,const bool tAutoDestroy = false>
struct thin_ptr
{
        typedef T wrapped_type;
        T* p;

        thin_ptr(T* p) {this->p = p;}
        thin_ptr(const thin_ptr& x) {this->operator=(x);}
        ~thin_ptr() { if (tAutoDestroy) destroy(); }

        int destroy() {delete p; p = 0; return 0;}
        T*  release() {T* tp = p; p = 0; return tp;}

        T* operator -> () const { return p;}
        T& operator *  () const { return *p;}
        T**  operator & () const {return &p;}
        operator T*    () const { return p;}
        T* operator =  (T* p) {this->p = p;}

        // for STL containers
        bool operator < (const thin_ptr& x) const
        { return *p < *x.p;}

        bool operator!() const  {return p == 0;}
};
which is giving the error:

 In member function `T** thin_ptr<T, tAutoDestroy>::operator&() const
   [with T = TSPGene<RandomCRT>, bool tAutoDestroy = false]':
/usr/include/c++/3.2.2/bits/stl_uninitialized.h:87:   instantiated from
`_ForwardIter std::__uninitialized_copy_aux(_InputIter, _InputIter,
_ForwardIter, __false_type) [with _InputIter =
__gnu_cxx::__normal_iterator<thin_ptr<TSPGene<RandomCRT>, false>*,
std::vector<thin_ptr<TSPGene<RandomCRT>, false>,
std::allocator<thin_ptr<TSPGene<RandomCRT>, false> > > >, _ForwardIter
= __gnu_cxx::__normal_iterator<thin_ptr<TSPGene<RandomCRT>, false>*,
std::vector<thin_ptr<TSPGene<RandomCRT>, false>,
std::allocator<thin_ptr<TSPGene<RandomCRT>, false> > > >]'
/usr/include/c++/3.2.2/bits/stl_uninitialized.h:112:   instantiated
from `_ForwardIter std::uninitialized_copy(_InputIter, _InputIter,
_ForwardIter) [with _InputIter =
__gnu_cxx::__normal_iterator<thin_ptr<TSPGene<RandomCRT>, false>*,
std::vector<thin_ptr<TSPGene<RandomCRT>, false>,
std::allocator<thin_ptr<TSPGene<RandomCRT>, false> > > >, _ForwardIter
= __gnu_cxx::__normal_iterator<thin_ptr<TSPGene<RandomCRT>, false>*,
std::vector<thin_ptr<TSPGene<RandomCRT>, false>,
std::allocator<thin_ptr<TSPGene<RandomCRT>, false> > > >]'
/usr/include/c++/3.2.2/bits/stl_vector.h:903:   instantiated from `void
std::vector<_Tp,
_Alloc>::_M_insert_aux(__gnu_cxx::__normal_iterator<_Tp*,
std::vector<_Tp, _Alloc> >, const _Tp&) [with _Tp =
thin_ptr<TSPGene<RandomCRT>, false>, _Alloc =
std::allocator<thin_ptr<TSPGene<RandomCRT>, false> >]'
/usr/include/c++/3.2.2/bits/stl_vector.h:498:   instantiated from `void
std::vector<_Tp, _Alloc>::push_back(const _Tp&) [with _Tp =
thin_ptr<TSPGene<RandomCRT>, false>, _Alloc =
std::allocator<thin_ptr<TSPGene<RandomCRT>, false> >]'
Main6.h:1194:   instantiated from here
Main6.h:679: invalid conversion from `TSPGene<RandomCRT>* const*' to `
   TSPGene<RandomCRT>**'
////////////////////////////////////////////////////////////////////////////////////////

how to rectify this error ?
plz plz help
thnx in advance



reply via email to

[Prev in Thread] Current Thread [Next in Thread]