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”的符号必须具有初始值设定项
请问大佬我该如何把代码修改一下呢。
vs2010 不完全支持C++11标准
auto是C++11引入的 a952135763 发表于 2022-3-16 17:12
vs2010 不完全支持C++11标准
auto是C++11引入的
怎么修改代码让vs2010实现他 自动推导的效果呢 本帖最后由 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 ) wsxzaq 发表于 2022-3-16 17:42
将
for (auto pItem : mItemList)//报错:提示无法推导包含“auto”的符号必须具有初始值设定项
{
好的,谢谢大佬。。。我去试试。。 赞同上面大佬说的, vs2010并不是完全的支持c++11, 甚至有些c++11的规范也不太对. 所以迁移的时候最佳方案是完全遗弃c++11的所有内容. for each (auto pItem in mItemList)
{
//...
}
这样试下,很久没用VS2010了,记忆中这样,你验证下。 LeoSky 发表于 2022-3-16 19:46
for each (auto pItem in mItemList)
{
//...
这是新方法吗,我试试。 LeoSky 发表于 2022-3-16 19:46
for each (auto pItem in mItemList)
{
//...
经过测试,感谢大佬给的代码,,完美支持。。
页:
[1]