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

时间:2012-02-24 21:14:30

标签: c++ object pointers vector iterator

嘿,第一个问题,我在此提前多多感谢。 我正在使用向量存储一系列指向CSquare类对象的指针,我想要一个可以传递的迭代器,以便我可以访问某个对象的函数。这是我目前的代码,试图没有运气。 IntteliSense告诉我“没有会员可用”。

    vector <CSquare*> pSquares;
    //filled in vector
    vector<CSquare*>::iterator tempIt = pSquares.begin();
    tempIt->getName();

不确定还要添加什么,但如果您还需要其他任何帮助,请说出来。

再次感谢。

编辑:问题解决了,我不得不解除引用两次。下面的代码可以工作,我想只要其他人需要相同的帮助就可以了,感谢无论如何都要看。

    vector <CSquare*> pSquares;
    //filled in vector
    vector<CSquare*>::iterator tempIt = pSquares.begin();
    (**tempIt).getName();

2 个答案:

答案 0 :(得分:5)

请记住,您需要取消引用迭代器才能获得指向的东西。因为这是vector<CSquare*>,所以你的迭代器实际上是一个指向指针的指针 - CSquare,所以你需要这样做:

(*tempIt)->getName();

答案 1 :(得分:4)

您需要额外的解除引用:

(*tempIt)->getName();

原因是您在向量中存储的内容是指针,因此*tempIt是对指针的引用,您需要再次取消引用以访问CSquare对象。