0

因此,当我遇到 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;
4

1 回答 1

2

它看起来像GetMeshes返回副本,您正在尝试将iterator一个容器与iterator另一个容器进行比较。这种比较对于 MSVC 中的检查迭代器是无效的。而且,感谢@Mike Seymour,根据 C++ 标准,这种比较是无效的。

于 2013-11-05T10:14:29.677 回答