我正在尝试循环一个指向我的类的指针向量,我们称之为MyClass
,并在MyClass
中为向量中的每个元素调用一个方法,我们称之为MyMethod
。即:
std::vector<MyClass*> ClassOne;
for(auto it: ClassOne){
ClassOne[it].MyMethod();
}
但显然这不起作用。有人能解释一下如何解决这个问题,但我的代码在这里实际上是在做什么(而不是我认为它应该做什么)。
谢谢!
使用
for(auto it: ClassOne)
{
// ...
}
it
是MyClass*
,不是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();
}
。但这不是最优的。
请注意,不建议使用普通指针。用智能手机代替。