C++ error C2440: “类型转换” : 无法从“std::vector::iterator”转换为“
原文地址:http://blog.csdn.net/onlyou930/article/details/5602654
圆环套圆环之迭代器
话说这一日是风平浪静,万里乌云,俺的心情好的没得说,收到命令清理A区(写部分代码,其中有在VC6下己完成的代码要移植到VC7下),一路上很轻松,用‘饭得标’的话来说就是‘卡卡’地!在快完成时出现错误。
error C2440: “类型转换” : 无法从“std::vector<_Ty>::iterator”转换为“PPkgHead”
with
[
_Ty=BYTE
]
出错代码PPkgHead pHead = (PPkgHead )m_vPkgRecv.begin();
晕之,在VC6下可以编译通过的呀!看看为啥不让转换呢?看了一下返回值是std::vector::iterator 或是 std::vector::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::iterator p = m_vPkgRecv.begin();
PPkgHead pHead = (PPkgHead )p._Myptr;
编译通过,哈哈!一直不明白为啥VC7中在P后加点不显示这个成员!另外在网上找到另一个解决方案是PPkgHead pHead = (PPkgHead )&(*m_vPkgRecv.begin());这个强制转换真是强呀,哈哈!不知道兄弟们谁还有更好的方案!
写完程序后看了一下CryptoAPI提供的接口,无意中看到了一个函数CryptCreateHash,这是什么??继续找下去,我立该崩溃了,他他他….居然支持各种Hash运算,签名以及密钥生成!!看了一下它支持MD2,MD4,MD5,SHA,MAC,RSA,DSS,DES,3DES,RC2,RC4,SSL3,AES…..太多了,几乎包括了己知的各种算法!好大的一个棉花糖呀!如何应用这些API呢?!由于要介绍的太多了,我这里以点代面,以MD5算法为例,首先要获得指定CSP的密钥容器的句柄(没有容器的要自己建立),然后就可以用CryptCreateHash创建一个空哈希对象了,其次用CryptHashData对一块数据进行哈希,把它加到指定的哈希对象中,再次用CryptGetHashParam设置一个哈希对象的参数,一个MD5运算的过程就完成了,呵呵简单吧!下面是我写的一个关于MD5的例子,请大家多多指教!
C++ error C2440: “类型转换” : 无法从“std::vector::iterator”转换为“的更多相关文章
- error C2440:“类型转换":无法从“void (__thiscall Play1::* )(int *)”转换为“cocos2d::SEL_CallFucN
转自:http://zhidao.baidu.com/link?url=VfSSkA0xfTVwNKaKh4tqW_sXlcsK-Rb16nEtQw5zaq5_306lnwJN3Kdb-rFp-r4L ...
- error C2440
error C2440: "初始化": 无法从"std::_List_const_iterator<std::_List_val<std::_List_sim ...
- 模仿std::vector写线性表的几点感想
数据结构还是很早之前学的了,当时才刚学过C语言,实现得都很简单,最近决定重新打牢基础,于是重新开始实现书上的数据结构和算法. 模仿C++ Primer的StrVec以及std::vector,使用模板 ...
- c++转载系列 std::vector模板库用法介绍
来源:http://blog.csdn.net/phoebin/article/details/3864590 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作 ...
- C++ 中的std::vector介绍(转)
vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vec ...
- error C2039: “bind2nd”: 不是“std”的成员
VS2012 出现如下错误: error C2039: "bind2nd": 不是"std"的成员 头文件中加上 #include <functi ...
- std::vector介绍
vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vec ...
- 孙鑫视频学习:改变窗口过程函数中出现error C2440错误的解决方法
在Visual Studio 2010中,即使代码是完完全全按照孙鑫视频中的敲,也会在出现error C2440,这是因为开发平台由VC6.0升级至VS2010,需要将原有的项目迁移.VS2010对消 ...
- std::vector<Channel2*> m_allChannels;容器,以及如何根据channelid的意义
std::vector<Channel2*> m_allChannels;容器,以及如何根据channelid的意义 这个容器保存了所有客户端连接的channel Channel2* Li ...
随机推荐
- 32位MD5加密补齐丢失的0
/// <summary> /// 获取32位MD5加密字符串(已补完0) /// </summary> /// <param name="strWord&qu ...
- Unity3D学习笔记(二十五):文件操作
文件是什么? 存储在硬盘上的最后的节点. 文件夹是什么? 文件的上级单位称为文件夹. 文件夹的基本结构? 文件夹是层级化结构的,对于同级的文件夹不可以重名,父文件夹和子文件夹可以同名> IO:I ...
- java项目中.classpath,.settings,.project,mymetadata文件的作用
今天犯了一个错误,误修改了本地的.classpath文件,导致项目好多地方报错,之前也没有仔细的研究过项目中的一些生成文件的作用. 今天特此进行记录. 不管我们在eclipse中新建任何的Java项目 ...
- 解决 E: Unable to correct problems, you have held broken packages. 问题
参考: Unable to correct problems, you have held broken packages 环境 Ubuntu 14.04, 64bit 问题 在安装gcc-4.9的时 ...
- 指数循环节 求A的B次方模C
phi(c)为欧拉函数, 欧拉定理 : 对于互质的正整数 a 和 n ,有 aφ(n) ≡ 1 mod n . A^x = A^(x % Phi(C) + Phi(C)) (mod C) (x & ...
- ubuntu16.04上安装tomcat7
sudo apt-get update sudo apt-get install tomcat7 启动:sudo service tomcat7 start 访问http://127.0.0.1:80 ...
- 正则表达式提取HTML中img标签的src地址
一般来说一个 HTML 文档有很多标签,比如“”.“”.“”等, 想把文档中的 img 标签提取出来并不是一件容易的事. 由于 img 标签样式变化多端,使提取的时候用程序寻找并不容易. 于是想要寻找 ...
- YOLO V1论文理解
摘要 作者提出了一种新的物体检测方法YOLO.YOLO之前的物体检测方法主要是通过region proposal产生大量的可能包含待检测物体的 potential bounding box,再用分类器 ...
- angular 模板语法(官方文档摘录)
https://angular.cn/guide/template-syntax {{}} 和"" 如果嵌套,{{}}里面求完值,""就是原意 <h3&g ...
- Yii中的CComponent应用实例
首先我们先了解一下如何创建一个CComponent,手册讲述如下: CComponent 是所有组件类的基类. CComponent 实现了定义.使用属性和事件的协议. 属性是通过getter方法或/ ...