C++ error C2440: “类型转换” : 无法从“std::vector::iterator”转换为“PPkgHead”
来源:互联网 发布:黔东南人口数据 编辑:程序博客网 时间:2024/05/29 04:08
圆环套圆环之迭代器
话说这一日是风平浪静,万里乌云,俺的心情好的没得说,收到命令清理A区(写部分代码,其中有在VC6下己完成的代码要移植到VC7下),一路上很轻松,用‘饭得标’的话来说就是‘卡卡’地!在快完成时出现错误。
error C2440: “类型转换” : 无法从“std::vector<_Ty>::iterator”转换为“PPkgHead”
with
[
_Ty=BYTE
]
出错代码PPkgHead pHead = (PPkgHead )m_vPkgRecv.begin();
晕之,在VC6下可以编译通过的呀!看看为啥不让转换呢?看了一下返回值是std::vector<BYTE>::iterator 或是 std::vector<BYTE>::const_iterator , 在begin()后面加了一个点看到了iterator有下面还有一个iterator(果然是圆环套圆环)和加、减、[]等运算符操作,很是郁闷应该怎么转换呢?到vector里看了一下原来是一个类 class iterator 在里面看到了几个函数
const_reference operator*() const
{ // return designated object
return (*_Myptr);
}
const_iterator& operator++()
{ // preincrement
++_Myptr;
return (*this);
}
const_iterator& operator--()
{ // predecrement
--_Myptr;
return (*this);
}
看到这里激动无比呀,可以确定出_Myptr就是当前的指针!修改代码
std::vector<BYTE>::iterator p = m_vPkgRecv.begin();
PPkgHead pHead = (PPkgHead )p._Myptr;
编译通过,哈哈!一直不明白为啥VC7中在P后加点不显示这个成员!另外在网上找到另一个解决方案是PPkgHead pHead = (PPkgHead )&(*m_vPkgRecv.begin());这个强制转换真是强呀,哈哈!不知道兄弟们谁还有更好的方案!
<P style="TEXT-INDENT: 2em">写完程序后看了一下CryptoAPI提供的接口,无意中看到了一个函数CryptCreateHash,这是什么??继续找下去,我立该崩溃了,他他他….居然支持各种Hash运算,签名以及密钥生成!!看了一下它支持MD2,MD4,MD5,SHA,MAC,RSA,DSS,DES,3DES,RC2,RC4,SSL3,AES…..太多了,几乎包括了己知的各种算法!好大的一个棉花糖呀!如何应用这些API呢?!由于要介绍的太多了,我这里以点代面,以MD5算法为例,首先要获得指定CSP的密钥容器的句柄(没有容器的要自己建立),然后就可以用CryptCreateHash创建一个空哈希对象了,其次用CryptHashData对一块数据进行哈希,把它加到指定的哈希对象中,再次用CryptGetHashParam设置一个哈希对象的参数,一个MD5运算的过程就完成了,呵呵简单吧!下面是我写的一个关于MD5的例子,请大家多多指教!</P>
转载请写明文章出处
- C++ error C2440: “类型转换” : 无法从“std::vector::iterator”转换为“PPkgHead”
- error C2440: “类型转换” : 无法从“overloaded-function”转换为
- error C2440: “类型转换”: 无法从“LPVOID”转换为“double
- gmsh编译error C2440: “初始化”: 无法从“std::_Tree_iterator<_Mytree>”转换为“std::_Tree_iterator<_Mytree>”
- 解决error C2440: “初始化”: 无法从“std::_List_const_iterator<_Mylist>”转换为“std::_List_iterator<_Mylist>”
- error C2440: “类型转换”: 无法从“overloaded-function”转换为“LPTHREAD_START_ROUTINE”
- error C2440: “类型转换”: 无法从“unsigned char”转换为“CString”
- cocos2d-x3.2中error C2440: “类型转换”: 无法从“void (__thiscall xx::* )(void)”转换为
- error C2440:CMainFrame 无法从 NMTOOLBARA 转换为 NMHDR
- error C2440: "reinterpret_cast":无法从"NMHDR*"转换为"NMITEMACTIVATE"
- error C2440: “初始化”: 无法从“DicomImage *”转换为“DicomImage”解决方案
- error C2440: "reinterpret_cast":无法从"NMHDR*"转换为"NMITEMACTIVATE"
- error C2440: “初始化”: 无法从“const char *”转换为“char *”
- error C2440 reinterpret_cast 无法从NMHDR *转换为NMITEMACTIVATE
- error C2440: “初始化”: 无法从“char *”转换为“int”
- error C2440: “=”: 无法从“CString”转换为“const char *”
- error C2440 “=” 无法从“XXXXX ”转换为“XXXXX ”
- error C2440: “=”: 无法从“CString”转换为“LPCWSTR”解决办法
- 一键设置IP
- epoll精髓
- HTML 简史
- 无题_20100518
- C++常量范围
- C++ error C2440: “类型转换” : 无法从“std::vector::iterator”转换为“PPkgHead”
- Oralce: Sequence & Trigger to Achieve Auto-Increment
- 计算地球上A B两点间距离的计算公式
- combobox实现双击事件
- 使用net命令来映射网络驱动盘
- PKU 1000 A+B 详细脑残题解~~~
- Microsoft SharePoint Server 2010 的 Total Economic ImpactTM(总体经济影响)
- 厚黑学:智者尽其谋,勇者尽其力
- VC++ 2005连接数据库