dmxayjn 发表于 2022-3-16 16:54

c++ auto 推导问题求助。。。。

本帖最后由 dmxayjn 于 2022-4-1 15:44 编辑

CDropListRender::~CDropListRender()
      {
                for (auto pItem : mItemList)//报错:提示无法推导包含“auto”的符号必须具有初始值设定项
                {
                        delete pItem;
                }
      }


下面的mItemList的声明
namespace wbqt
{
      typedef struct{
                DWORD dwItemID;
                UINT nNum;
                DWORD dwClearTick;
      } DROPLISTITEM;

      class CDropListRender
      {
      private:
                DROPLISTITEM mPenyaList;
                vector<DROPLISTITEM*> mItemList;//声明在这里

                DWORD CalcBlendFactor(DWORD dwDiff) const;
      public:
                CDropListRender();
                ~CDropListRender();

                void Process();
                void Render(C2DRender* p2DRender) const;
                void AddItemDrop(DWORD dwItemID, UINT nNum);

      };
}

代码是从 vs2013上复制的,此代码在vs2013上可以正常运行

我把代码复制到 vs2010 上以后,就出现了 报错:提示无法推导包含“auto”的符号必须具有初始值设定项

请问大佬我该如何把代码修改一下呢。




a952135763 发表于 2022-3-16 17:12

vs2010 不完全支持C++11标准
auto是C++11引入的

dmxayjn 发表于 2022-3-16 17:14

a952135763 发表于 2022-3-16 17:12
vs2010 不完全支持C++11标准
auto是C++11引入的

怎么修改代码让vs2010实现他 自动推导的效果呢

wsxzaq 发表于 2022-3-16 17:42

本帖最后由 wsxzaq 于 2022-3-16 17:45 编辑

dmxayjn 发表于 2022-3-16 17:14
怎么修改代码让vs2010实现他 自动推导的效果呢

for (auto pItem : mItemList)//报错:提示无法推导包含“auto”的符号必须具有初始值设定项
{
   delete pItem;
}

改为普通的循环即可
for(vector<DROPLISTITEM*> it = mItemList.begin();it!=mItemList.end();++it )

dmxayjn 发表于 2022-3-16 17:47

wsxzaq 发表于 2022-3-16 17:42

for (auto pItem : mItemList)//报错:提示无法推导包含“auto”的符号必须具有初始值设定项
{


好的,谢谢大佬。。。我去试试。。

胡箫儿 发表于 2022-3-16 19:29

赞同上面大佬说的, vs2010并不是完全的支持c++11, 甚至有些c++11的规范也不太对. 所以迁移的时候最佳方案是完全遗弃c++11的所有内容.

LeoSky 发表于 2022-3-16 19:46

for each (auto pItem in mItemList)
{
    //...
}

这样试下,很久没用VS2010了,记忆中这样,你验证下。

dmxayjn 发表于 2022-3-16 23:25

LeoSky 发表于 2022-3-16 19:46
for each (auto pItem in mItemList)
{
    //...


这是新方法吗,我试试。

dmxayjn 发表于 2022-3-19 17:48

LeoSky 发表于 2022-3-16 19:46
for each (auto pItem in mItemList)
{
    //...


经过测试,感谢大佬给的代码,,完美支持。。
页: [1]
查看完整版本: c++ auto 推导问题求助。。。。