C++ 使用迭代器访问存储在向量中的类对象的方法。怎么用?
嘿,第一个问题,我在这里问你,谢谢你。 我用一个向量来存储一系列指向CSquare类对象的指针,我想要一个迭代器,我可以传递它,这样我就可以访问某个对象的函数。这是我当前尝试此操作的代码,运气不佳。IntteliSense告诉我“没有可用的成员”C++ 使用迭代器访问存储在向量中的类对象的方法。怎么用?,c++,object,pointers,vector,iterator,C++,Object,Pointers,Vector,Iterator,嘿,第一个问题,我在这里问你,谢谢你。 我用一个向量来存储一系列指向CSquare类对象的指针,我想要一个迭代器,我可以传递它,这样我就可以访问某个对象的函数。这是我当前尝试此操作的代码,运气不佳。IntteliSense告诉我“没有可用的成员” vector <CSquare*> pSquares; //filled in vector vector<CSquare*>::iterator tempIt = pSquares.begin();
vector <CSquare*> pSquares;
//filled in vector
vector<CSquare*>::iterator tempIt = pSquares.begin();
tempIt->getName();
vectorpsquares;
//填充向量
向量::迭代器tembit=pSquares.begin();
tempIt->getName();
不知道还有什么要补充的,但是如果你需要什么帮助我,请说
再次感谢
编辑:问题解决了,我不得不取消引用两次。下面的代码很有效,我想我还是把它留着吧,以防其他人需要同样的帮助,谢谢你的关注
vector <CSquare*> pSquares;
//filled in vector
vector<CSquare*>::iterator tempIt = pSquares.begin();
(**tempIt).getName();
vectorpsquares;
//填充向量
向量::迭代器tembit=pSquares.begin();
(**tembit.getName();
请记住,您需要取消对迭代器的引用,以获得指向的内容。由于这是一个向量
,因此迭代器实际上是指向-CSquare
的指针,因此需要执行以下操作:
(*tempIt)->getName();
您需要一个额外的解引用:
(*tempIt)->getName();
原因是,向量中存储的是指针,因此
*tempIt
是对指针的引用,您需要再次取消引用以访问CSquare
对象。干杯,我在2分钟前就明白了xD,我想把它从代码的其余部分写出来可以帮助我思考它。这种情况有时会发生。这被称为“橡皮鸭效应”(参见)。我知道这个概念,但读起来很有趣,它很好地分散了我的注意力,现在我要继续努力。