gpt4 book ai didi

c++ - std::allocator<_Ty>::deallocate:无法将参数 1 从 'X' 转换为 'Y'

转载 作者:行者123 更新时间:2023-11-28 03:48:37 25 4
gpt4 key购买 nike

我正在将一些 C++ 代码从 VisualStudio 6 升级到 VisualStudio 2008。

有一个类“GenExportableTree”,看起来很像来自 Dinkumware 的 xtree http://www.dinkumware.com/xtree.txt

编译包含此 GenExportableTree 的库时,出现以下错误:

Error   37  error C2664: 'std::allocator<_Ty>::deallocate' : cannot convert 
parameter 1 from 'std::CGenExportableTree<_K,_Ty,_Kfn,_Pr,_A>::_Node *' to
'CCfwSchemaInfo *'

是以下几行:

void _Freenode(_Nodeptr _S)
{
allocator.deallocate( _S, 1);
}

一些额外的信息:您可以在上面的 dinkumware 链接下找到 GenExportableTree 的完整实现。

在拐角处出现 CCfwSchemaInfo 的地方,我可以找到以下声明:

typedef CGenExportableMap<wstring, CCfwSchemaInfo, GenNoCaseWString> CfwSchemaTable;

CGenExportableMap的定义如下:

template<class _K, class _Ty, class _Pr = less<_K>,
class _A = allocator<_Ty> >
class CGenExportableMap {
public:
typedef CGenExportableMap<_K, _Ty, _Pr, _A> _Myt;
typedef pair<const _K, _Ty> value_type;
....
....

typedef _K key_type;
typedef _Ty referent_type;
typedef _Pr key_compare;
typedef _A allocator_type;
typedef typename _A::reference _Tref;
typedef CGenExportableTree<_K, value_type, _Kfn, _Pr, _A> _Imp;

最后一行是在 GenExportableMap 定义中使用 GenExportableTree 的地方。

由于之前所有这些都在 vs6 下正确编译,我想实际上一切都是正确的 - 可能编译器现在更严格了 - 那么我应该从哪里开始寻找编译器提示的错误?我应该如何解决这个问题?

谢谢!

最佳答案

VC6 有严重的 模板问题,因此它不能根据标准支持分配器。他们使用了一些早已被删除的特殊技巧。

如果某些代码仍然依赖于那些非标准接口(interface),我认为您唯一的选择是修复代码,使其与当前(标准)分配器接口(interface)一起工作。对不起。

关于c++ - std::allocator<_Ty>::deallocate:无法将参数 1 从 'X' 转换为 'Y',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6442375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com