吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 982|回复: 5
收起左侧

[已解决] vs2003不支持auto,可以用什么来代替修改呢

 关闭 [复制链接]
dmxayjn 发表于 2020-7-8 22:24
本帖最后由 dmxayjn 于 2020-7-8 23:10 编辑

void CDbManager::SendDisguiseUserTime( CQuery* pQuery, LPDB_OVERLAPPED_PLUS lpDbOverlappedPlus )
{
        char szExec[64];
        sprintf(szExec, "uspGetTempDisguiseTimeInfo");
        if (pQuery->Exec(szExec))
        {
                int cb = 0;
                std::list<std::pair<DWORD, //playerID
                        DWORD> > info;

                while (pQuery->Fetch())
                {
                        info.push_back(std::make_pair(pQuery->GetInt("playerID"), pQuery->GetInt64("time")));
                }
                BEFORESENDDUAL( ar, PACKETTYPE_QUERY_DISGUISE_INFO, DPID_UNKNOWN, DPID_UNKNOWN );
                ar << info.size();
               
                for(auto iter = info.begin(); iter != info.end(); ++iter) //这里报错error C2440: “初始化” : 无法从“std::list<_Ty>::iterator”转换为“int” with [ _Ty=std::pair ] 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符
                { //error C2678: 二进制“!=” : 没有找到接受“int”类型的左操作数的运算符(或没有可接受的转换)
                        ar << iter->first; // error C2227: “->first”的左侧必须指向类/结构/联合 类型是“int”
                        ar << iter->second; // error C2227: “->second”的左侧必须指向类/结构/联合
                }
                SEND( ar, CDPTrans::GetInstance(), DPID_ALLPLAYERS );
        }
        if(lpDbOverlappedPlus)
                FreeRequest( lpDbOverlappedPlus );

}

这个代码是我从  vs2010项目上复制的,我想移植到 vs2003项目里,
现在发现 vs2003 不支持 auto, auto 需要改成什么类型。



发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

云在天 发表于 2020-7-8 22:40
auto iter = info.begin()

这东西就是个迭代器的指针,你可以看看info是什么类型的 然后 替换就行了
 楼主| dmxayjn 发表于 2020-7-8 22:46
云在天 发表于 2020-7-8 22:40
这东西就是个迭代器的指针,你可以看看info是什么类型的 然后 替换就行了

感谢回复,已经请教了大神已经解决了,我把修改好的代码也发上来,让更多人都知道。
 楼主| dmxayjn 发表于 2020-7-8 22:47
已经解决了,已经修改的代码如下:
                std::list<std::pair<DWORD, //playerID
                        DWORD> > info;

                while (pQuery->Fetch())
                {
                        info.push_back(std::make_pair(pQuery->GetInt("playerID"), pQuery->GetInt64("time")));
                }
                BEFORESENDDUAL( ar, PACKETTYPE_QUERY_DISGUISE_INFO, DPID_UNKNOWN, DPID_UNKNOWN );
                ar << info.size();
               
                for(std::list<std::pair<DWORD,DWORD> >::iterator iter = info.begin(); iter != info.end(); ++iter)
                {
                        ar << iter->first;
                        ar << iter->second;
                }
我的爱是你 发表于 2020-7-8 22:47
本帖最后由 我的爱是你 于 2020-7-8 22:49 编辑

解决了就行
 楼主| dmxayjn 发表于 2020-7-8 22:49
我的爱是你 发表于 2020-7-8 22:47
for( std::list::iterator iter =  info.begin(); iter != info.end(); ++iter)
既然知道list 容器储存一 ...

嗯,还是要感谢回答,已经解决,方法一样。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-5 20:55

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表