我制作了一张 map ,上面充满了 vector ,看起来像这样:
std::map<int, std::vector<CClass*>> pointers = getMap();
现在,我想遍历 map 的每个位置,也要遍历 map 中存储的 vector 的每个位置。
它是如何遍历 map 的:
for (std::map<int, std::vector<CClass*>>::iterator it = pointers.begin(); it != pointers.end(); it++)
这可以正常工作,并且可以像我想要的那样遍历每个对象。
但是现在我想遍历 vector 中的每个时隙,并像这样尝试:
for (std::vector<CClass*>::iterator playerIt = it->second.begin(); playerIt != it->second.end(); playerIt++)
如果我想访问存储在其中的值,编译器会给我这个错误:
file.cpp(552) : error C2839: Ungültiger Rückgabetyp 'CClass **' für überladenen Operator '->'
这意味着“对于超重运算符'->'无效的返回类型'CClass **'
问候
最佳答案
playerIt
是一个迭代器,而不是CClass
的指针。您需要取消引用迭代器以获取指向CClass
的指针:
CClass * player = (*playerIt);
player->ClassMethod(...); // or whatever