2017-01-02 1 views
-9

반복기를 처음 사용하는데 문제가 있습니다. 이로써벡터 반복기를 사용하여 객체에 액세스하려고 시도했습니다.

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 

내가 점점 개체 내부에 저장되어있는 몇 가지 숫자를 합산 달성하고자 :

내가 벡터를 생성하고 객체에 몇 가지 포인터를 밀어 코드의 일부이다. 그러나 그것은 컴파일되지 않을 것 같습니다.

오류는 다음과 같습니다.

27 ~ 240 \ Test.cpp에 [오류] 부재 'get_num'요청 '* 온도 .__ gnu_cxx :: __ normal_iterator < _Iterator, _Container> :: 운용자>>(), 포인터 인 'MyClass *'를 입력하십시오. (아마도 '->'를 사용 하시겠습니까?)

+2

일부 책 또는 자습서를 읽어보십시오. – Yves

+3

당신은'MyVector.back()'을 찾고 있습니다. 'end()'는 one-past-the-end iterator이고, dereferencing은 UB를 트리거한다. – Quentin

+0

'(* temp) -> get_num()'. –

답변

1

MyClass 개체를 사용하기 전에 먼저 포인터를 역 참조해야합니다.

둘째, 끝 반복자 (http://www.cs.northwestern.edu/~riesbeck/programming/c++/stl-iterators.html)를 참조하지 말아야합니다.

세 번째로, 컴파일러는 '+ ='토큰 앞에 예상 된 초기화 프로그램에 대해 경고해야합니다.

double sum = 0.0; 
sum += (*temp)->get_num(); 
관련 문제