注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

mie

 
 
 

日志

 
 

VC2010+STL库map编译错误:error C2440: “初始化”: 无法从“ILTSkinObject *”转换为“const HWND ”  

2011-03-06 16:07:07|  分类: 编译错误 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

STL库的编译错误信息都是很吓人的。

错误信息:

2>d:\program files\microsoft vis l st io 10.0\vc\incl e\utility(163): error C2440: “初始化”: 无法从“ILTSkinObject *”转换为“const HWND ”
2>          与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
2>          d:\program files\microsoft vis l st io 10.0\vc\incl e\utility(255): 参见对正在编译的函数 模板 实例化“std::_Pair_base<_Ty1,_Ty2>::_Pair_base<_Ty,HWND__>(_Other1 &&,_Other2 &&)”的引用
2>          with
2>          [
2>              _Ty1=const HWND ,
2>              _Ty2=P_ILTSkinObject ,
2>              _Ty=ILTSkinObject *,
2>              _Other1=ILTSkinObject *,
2>              _Other2=HWND__ *
2>          ]
2>          d:\program files\microsoft vis l st io 10.0\vc\incl e\xmemory(208): 参见对正在编译的函数 模板 实例化“std::pair<_Ty1,_Ty2>::pair<ILTSkinObject*,HWND__*>(std::pair<ILTSkinObject *,HWND__ *> &&)”的引用
2>          with
2>          [
2>              _Ty1=const HWND ,
2>              _Ty2=P_ILTSkinObject
2>          ]
2>          d:\program files\microsoft vis l st io 10.0\vc\incl e\xmemory(280): 参见对正在编译的函数 模板 实例化“void std::allocator<_Ty>::constr t<std::pair<_Ty1,_Ty2>>(std::pair<const _Kty,ILTSkinObject> *,_Other &&)”的引用
2>          with
2>          [
2>              _Ty=std::pair<const HWND ,P_ILTSkinObject >,
2>              _Ty1=ILTSkinObject *,
2>              _Ty2=HWND__ *,
2>              _Kty=HWND,
2>              _Other=std::pair<ILTSkinObject *,HWND__ *>
2>          ]
2>          d:\program files\microsoft vis l st io 10.0\vc\incl e\xtree(592): 参见对正在编译的函数 模板 实例化“void std::_Cons_val<std::allocator<_Ty>,_Ty,std::pair<_Ty1,_Ty2>>(_Alloc &,std::pair<const _Kty,ILTSkinObject> *,std::pair<_Ty1,_Ty2> &&)”的引用
2>          with
2>          [
2>              _Ty=std::pair<const HWND ,P_ILTSkinObject >,
2>              _Ty1=ILTSkinObject *,
2>              _Ty2=HWND__ *,
2>              _Alloc=std::allocator<std::pair<const HWND ,P_ILTSkinObject >>,
2>              _Kty=HWND
2>          ]
2>          d:\program files\microsoft vis l st io 10.0\vc\incl e\xtree(755): 参见对正在编译的函数 模板 实例化“std::_Tree_nod<_Traits>::_Node *std::_Tree_val<_Traits>::_Buynode<_Ty>(_Valty &&)”的引用
2>          with
2>          [
2>              _Traits=std::_Tmap_traits<HWND ,P_ILTSkinObject ,std::less<HWND >,std::allocator<std::pair<const HWND ,P_ILTSkinObject >>,false>,
2>              _Ty=std::pair<ILTSkinObject *,HWND__ *>,
2>              _Valty=std::pair<ILTSkinObject *,HWND__ *>
2>          ]
2>          f:\ltdirectuiskin\ltdirectuiskin\incl e\skin\main\ltskinhwndtoskinobject.cpp(75): 参见对正在编译的函数 模板 实例化“std::pair<_Ty1,_Ty2> std::_Tree<_Traits>::insert<std::pair<ILTSkinObject *,HWND__ *>>(_Valty &&)”的引用
2>          with
2>          [
2>              _Ty1=std::_Tree_iterator<std::_Tree_val<std::_Tmap_traits<HWND ,P_ILTSkinObject ,std::less<HWND >,std::allocator<std::pair<const HWND ,P_ILTSkinObject >>,false>>>,
2>              _Ty2=bool,
2>              _Traits=std::_Tmap_traits<HWND ,P_ILTSkinObject ,std::less<HWND >,std::allocator<std::pair<const HWND ,P_ILTSkinObject >>,false>,
2>              _Valty=std::pair<ILTSkinObject *,HWND__ *>
2>          ]
2>d:\program files\microsoft vis l st io 10.0\vc\incl e\utility(163): error C2439: “std::_Pair_base<_Ty1,_Ty2>::first”: 未能初始化成员
2>          with
2>          [
2>              _Ty1=const HWND ,
2>              _Ty2=P_ILTSkinObject
2>          ]
2>          d:\program files\microsoft vis l st io 10.0\vc\incl e\utility(166) : 参见“std::_Pair_base<_Ty1,_Ty2>::first”的声明
2>          with
2>          [
2>              _Ty1=const HWND ,
2>              _Ty2=P_ILTSkinObject
2>          ]
2>d:\program files\microsoft vis l st io 10.0\vc\incl e\utility(163): error C2440: “初始化”: 无法从“HWND__ *”转换为“P_ILTSkinObject ”
2>          与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
2>d:\program files\microsoft vis l st io 10.0\vc\incl e\utility(163): error C2439: “std::_Pair_base<_Ty1,_Ty2>::second”: 未能初始化成员
2>          with
2>          [
2>              _Ty1=const HWND ,
2>              _Ty2=P_ILTSkinObject
2>          ]
2>          d:\program files\microsoft vis l st io 10.0\vc\incl e\utility(167) : 参见“std::_Pair_base<_Ty1,_Ty2>::second”的声明
2>          with
2>          [
2>              _Ty1=const HWND ,
2>              _Ty2=P_ILTSkinObject
2>          ]

 

代码:


#incl e <map>
using std::map;
typedef map<HWND, P_ILTSkinObject> CLTSkinHwndToSkinObjectMap;
typedef CLTSkinHwndToSkinObjectMap::iterator P_CLTSkinHwndToSkinObjectMap;

 

错误原因:

m_Map.insert(std::make_pair(pObject, hwnd));

改为:
  m_Map.insert(std::make_pair(hwnd, pObject));


写反了!类型没法转换。

 

by:zhanyonhu

  评论这张
 
阅读(4330)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016