c++遍历类指针的vector并使用基函数



我正在尝试循环一个指向我的类的指针向量,我们称之为MyClass,并在MyClass中为向量中的每个元素调用一个方法,我们称之为MyMethod。即:

std::vector<MyClass*> ClassOne;
for(auto it: ClassOne){
ClassOne[it].MyMethod();
}

但显然这不起作用。有人能解释一下如何解决这个问题,但我的代码在这里实际上是在做什么(而不是我认为它应该做什么)。

谢谢!

使用

for(auto it: ClassOne)
{
// ...
}

itMyClass*,不是int。因此,您需要将对MyMethod的调用更改为

it->MyMethod();

for循环需要是:

for(auto it: ClassOne)
{
it->MyMethod();
}

您正在使用基于范围的for循环,因此您应该使用

for(auto it: ClassOne){
it -> MyMethod();
}

it不是索引。它是元素(vector的元素,是指针)本身的副本。它可以是元素本身,使用

for(auto & it: ClassOne){
it -> MyMethod();
}

。但这不是最优的。

请注意,不建议使用普通指针。用智能手机代替。

最新更新