R
ranin02
Hi,
We have a list derived from std::list that has a custom allocator
derived from std::allocator. This was originally written using VC++
6.0 which required a workaround for the fact that 6.0 did not support
nested templates classes, so could not use the rebind struct.
Instead, a _Charalloc function was implemented.
Now that we are moving to VS 2005, this is no longer working so I need
to implement using the rebind struct. So I did this, and changed the
charalloc function to be a regular allocate function. But I am
running into problems, which I am thinking may be partly because the
allocator is taking two template parms. The template is declared as
follows:
template <class Ty, class _Node>
class CObjectPoolListAlloc : public std::allocator<Ty>
And I declared the rebind struct as follows:
template<class _Other>
struct rebind {
typedef CObjectPoolListAlloc<_Other, _Node> other;
};
And then I changed from using charalloc to an allocator declared as
follows:
_Node* allocate(size_type _N)
I am getting this error from the compiler:
error C2440: 'initializing' : cannot convert from
'std::_List_nod<_Ty,_Alloc>::_Node *' to
'std::_List_nod<_Ty,_Alloc>::_Node *'
Any thoughts?
Thanks,
Sherri
We have a list derived from std::list that has a custom allocator
derived from std::allocator. This was originally written using VC++
6.0 which required a workaround for the fact that 6.0 did not support
nested templates classes, so could not use the rebind struct.
Instead, a _Charalloc function was implemented.
Now that we are moving to VS 2005, this is no longer working so I need
to implement using the rebind struct. So I did this, and changed the
charalloc function to be a regular allocate function. But I am
running into problems, which I am thinking may be partly because the
allocator is taking two template parms. The template is declared as
follows:
template <class Ty, class _Node>
class CObjectPoolListAlloc : public std::allocator<Ty>
And I declared the rebind struct as follows:
template<class _Other>
struct rebind {
typedef CObjectPoolListAlloc<_Other, _Node> other;
};
And then I changed from using charalloc to an allocator declared as
follows:
_Node* allocate(size_type _N)
I am getting this error from the compiler:
error C2440: 'initializing' : cannot convert from
'std::_List_nod<_Ty,_Alloc>::_Node *' to
'std::_List_nod<_Ty,_Alloc>::_Node *'
Any thoughts?
Thanks,
Sherri