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 ...
随机推荐
- POJ 1236 Network of Schools(tarjan)题解
题意:一个有向图.第一问:最少给几个点信息能让所有点都收到信息.第二问:最少加几个边能实现在任意点放信息就能传遍所有点 思路:把所有强连通分量缩成一点,然后判断各个点的入度和出度 tarjan算法:问 ...
- python从字符串解析方法名
方法如下 import requests func_name = 'get' fn_obj = getattr(requests,func_name) fn_obj('http://www.baidu ...
- 51nod 1232 完美数 数位dp
1232 完美数 题目来源: 胡仁东 基准时间限制:2 秒 空间限制:131072 KB 如果一个数能够被组成它的各个非0数字整除,则称它是完美数.例如:1-9都是完美数,10,11,12,101都 ...
- 安装 mysql5.7.2 (Ubuntu 16.04 desktop amd64)
1.下载mysql deb https://dev.mysql.com/downloads/mysql/ #移动到/usr/local/src/目录,解压 sudo mv mysql-server_5 ...
- Python day13文件的读写
# 文件操作 f=open("E:\\1.txt",encoding="GBK")#打开文件 print(f.writable())#是否可写 print(f. ...
- jsjl_for_ubuntu12.04
1. VC++代码: #include <stdio.h> #include <windows.h> #include <wchar.h> void MoveMou ...
- Thunder团队Alpha周贡献分规则及贡献分分配结果
小组名称:Thunder 项目名称:爱阅app 组长:王航 成员:李传康.代秋彤.邹双黛.苗威.宋雨.胡佑蓉.杨梓瑞 Alpha周贡献分分配结果
- Codeforces 894B - Ralph And His Magic Field
894B - Ralph And His Magic Field 思路: 当k为1时,如果n和m奇偶性不同,那么没有答案. 可以证明,在其他情况下有答案,且答案为2^(n-1)*(m-1),因为前n- ...
- unity项目针对IOS及Android平台的音频压缩格式
IOS : 建议采用MP3格式, Android : 建议采用Vorbis格式, 因为这两种格式分别在这两个平台上有硬件解码的支持, 硬件解码比软件解码快.
- C#匿名对象序列化
//匿名对象序列化 }; Console.WriteLine(JsonConvert.SerializeObject(obj)); //匿名集合序列化 List<object> list ...