我制作了一张 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

10-08 16:18