问题描述
对于我不是我要更新的代码的作者这一事实,我深表歉意,但我会尽全力激励它.
I apologize for the fact that I am not the author of the code I am trying to update but I will do my best to motivate it.
我们在代码中一直使用以下typedef:
We have been using the following typedef in our code:
typedef std :: map< CAdapt< CComBSTR> ;, long > MapCollectionType;
typedef std::map<CAdapt<CComBSTR>, long> MapCollectionType;
编译后会在VS 2003中找到,但是我们试图将项目移植到VS 2008,现在我们收到以下错误消息:
错误1错误C2061:语法错误:标识符'_Wherenode'c:\ Program Files \ Microsoft Visual Studio 9.0 \ VC \ include \ xtree 1411
c:\ Program Files \ Microsoft Visual Studio 9.0 \ VC \ include \ xtree(1411):错误C2061:语法错误:标识符'_Wherenode'
c:\ Program Files \ Microsoft Visual Studio 9.0 \ VC \ include \ xtree(1408):在编译类模板成员函数'std :: _ Tree_nod< _Traits> :: _ Node * std :: _ Tree< _Traits> :: _ Buynode(std :: _ Tree_nod< _Traits> :: _ Node *,std :: _Tree_nod< _Traits> :: _ Node *,std :: _ Tree_nod< _Traits> :: _ Node *,const std :: pair< _Ty1,_Ty2>&,char)'
[
_Traits = std :: _ Tmap_traits< ATL :: CAdapt< ATL: :CComBSTR> ;,长,std :: less< ATL :: CAdapt< ATL :: CComBSTR>,std :: allocator< std :: pair< const ATL :: CAdapt< ATL :: CComBSTR>,long> ,false>,
_Ty1 = const ATL :: CAdapt< ATL :: CComBSTR> ;,
_Ty2 = long
]
c:\ Program Files \ Microsoft Visual Studio 9.0 \ VC \ include \ map(78):请参见对类模板实例化'std :: _ Tree< _Traits>'的引用正在编译
[
_Traits = std :: _ Tmap_traits< ATL :: CAdapt< ATL: :CComBSTR> ;,长,std :: less< ATL :: CAdapt< ATL :: CComBSTR>,std :: allocator< std :: pair< const ATL :: CAdapt< ATL :: CComBSTR>,long> ,false>
]
c:\ documents and settings \ lmartin \ perforce \ lmartin_damtest09_workspace \ mediabin \ main \ clientinterfaces \ mbpscriptmodel \ MBObjectCollection.h(266):请参见对类模板实例化'std :: map< _Kty,_Ty>'的引用正在编译
[
_Kty = ATL :: CAdapt< ATL :: CComBSTR>,
_Ty = long
]
typedefs和STL向量的相似代码似乎没有相同的问题.我已经阅读了有关CAdapt的文档,并且已经对错误进行了搜索,但是还没有找到相关的内容.任何帮助都将不胜感激.
Similar code that typedefs and STL vector does not seem to have the same problem. I have read the documentation on CAdapt and have done searches on the errors but have yet to find somethng relevant. Any help greatly appreciated.
谢谢
莱曼·赫德
Interwoven,Inc.
Interwoven, Inc.
推荐答案
#include \< atlbase.h> |
#include< map> |
int main( void ) |
{ |
std :: map< ATL :: CAdapt< ATL :: CComBSTR>, 长 > foo; |
foo [ATL :: CComBSTR()] = 长 (); |
} |
#include <atlbase.h> |
#include <map> |
int main( void ) |
{ |
std::map< ATL::CAdapt<ATL::CComBSTR>, long > foo; |
foo[ ATL::CComBSTR() ] = long(); |
} |
这篇关于ATL和std :: map问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!