尝试使用向量迭代器访问对象

时间:2017-01-02 15:47:59

标签: c++

我是迭代者的新手,我遇到了问题。

这是代码的一部分,我创建一个向量并推送一些指向对象的指针:

vector<MyClass*> MyVector;
MyVector.push_back(new object); 
MyVector.push_back(new object); 
MyVector.push_back(new object); 
vector<MyClass*>::iterator temp;
temp = MyVector.end(); //because I want to use a function for the last one
Sum += temp->get_num(); //function that returns an object member

通过这个我想获得和总结存储在对象中的一些数字。但似乎它不会编译。

错误如下。

  

240 27~ \ test.cpp [错误]请求'* temp .__ gnu_cxx :: __ normal_iterator&lt; _Iterator,_Container&gt; :: operator-&gt;中的成员'get_num' &gt;()',它是指针类型'MyClass *'(也许你想使用' - &gt;'?)

1 个答案:

答案 0 :(得分:1)

在使用MyClass对象之前,首先应取消引用指针。

其次,你不应该取消引用结束迭代器(http://www.cs.northwestern.edu/~riesbeck/programming/c++/stl-iterators.html)。

第三,编译器应该在&#39; + =&#39;之前警告过你预期的初始化器。令牌。

double sum = 0.0;
sum += (*temp)->get_num();