Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用迭代器访问存储在向量中的类对象的方法。怎么用?_C++_Object_Pointers_Vector_Iterator - Fatal编程技术网

C++ 使用迭代器访问存储在向量中的类对象的方法。怎么用?

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();

嘿,第一个问题,我在这里问你,谢谢你。 我用一个向量来存储一系列指向CSquare类对象的指针,我想要一个迭代器,我可以传递它,这样我就可以访问某个对象的函数。这是我当前尝试此操作的代码,运气不佳。IntteliSense告诉我“没有可用的成员”

    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,我想把它从代码的其余部分写出来可以帮助我思考它。这种情况有时会发生。这被称为“橡皮鸭效应”(参见)。我知道这个概念,但读起来很有趣,它很好地分散了我的注意力,现在我要继续努力。