所以当我遇到Debug断言时,我正在编码。 现在我非常感兴趣为什么这段代码不起作用:
for(Model::MeshMap::iterator it = obj1->GetMeshes().begin(); it != obj1->GetMeshes().end(); it++)
这段代码确实:
Model::MeshMap obj1meshes = obj1->GetMeshes();
for(Model::MeshMap::iterator it = obj1meshes.begin(); it != obj1meshes.end(); it++)
在模型类中我有这个:
typedef std::map<std::string, Mesh*> MeshMap;
答案 0 :(得分:2)
看起来GetMeshes
会返回副本,并且您尝试将一个容器的iterator
与另一个容器的iterator
进行比较。这种比较在MSVC中检查的迭代器方面无效。而且,感谢@Mike Seymour,根据C ++标准,这种比较是无效的。